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

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          K. Hamzeh
  8. Request for Comments: 2637                         Ascend Communications
  9. Category: Informational                                          G. Pall
  10.                                                    Microsoft Corporation
  11.                                                              W. Verthein
  12.                                                                     3Com
  13.                                                                J. Taarud
  14.                                                 Copper Mountain Networks
  15.                                                                W. Little
  16.                                                           ECI Telematics
  17.                                                                  G. Zorn
  18.                                                    Microsoft Corporation
  19.                                                                July 1999
  20.  
  21.  
  22.                 Point-to-Point Tunneling Protocol (PPTP)
  23.  
  24. Status of this Memo
  25.  
  26.    This memo provides information for the Internet community.  It does
  27.    not specify an Internet standard of any kind.  Distribution of this
  28.    memo is unlimited.
  29.  
  30. Copyright Notice
  31.  
  32.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  33.  
  34. IESG Note
  35.  
  36.    The PPTP protocol was developed by a vendor consortium. The
  37.    documentation of PPTP is provided as information to the Internet
  38.    community. The PPP WG is currently defining a Standards Track
  39.    protocol (L2TP) for tunneling PPP across packet-switched networks.
  40.  
  41. Abstract
  42.  
  43.    This document specifies a protocol which allows the Point to Point
  44.    Protocol (PPP) to be tunneled through an IP network.  PPTP does not
  45.    specify any changes to the PPP protocol but rather describes a new
  46.    vehicle for carrying PPP.  A client-server architecture is defined in
  47.    order to decouple functions which exist in current Network Access
  48.    Servers (NAS) and support Virtual Private Networks (VPNs).  The PPTP
  49.    Network Server (PNS) is envisioned to run on a general purpose
  50.    operating system while the client, referred to as a PPTP Access
  51.    Concentrator (PAC) operates on a dial access platform.  PPTP
  52.    specifies a call-control and management protocol which allows the
  53.    server to control access for dial-in circuit switched calls
  54.    originating from a PSTN or ISDN or to initiate outbound circuit-
  55.  
  56.  
  57.  
  58. Hamzeh, et al.               Informational                      [Page 1]
  59.  
  60. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  61.  
  62.  
  63.    switched connections.  PPTP uses an enhanced GRE (Generic Routing
  64.    Encapsulation) mechanism to provide a flow- and congestion-controlled
  65.    encapsulated datagram service for carrying PPP packets.
  66.  
  67. Specification of Requirements
  68.  
  69.    In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
  70.    "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
  71.    described in [12].
  72.  
  73.    The words "silently discard", when used in reference to the behavior
  74.    of an implementation upon receipt of an incoming packet, are to be
  75.    interpreted as follows: the implementation discards the datagram
  76.    without further processing, and without indicating an error to the
  77.    sender.  The implementation SHOULD provide the capability of logging
  78.    the error, including the contents of the discarded datagram, and
  79.    SHOULD record the event in a statistics counter.
  80.  
  81. Table of Contents
  82.  
  83.    1. Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
  84.    1.1.  Protocol Goals and Assumptions . . . . . . . . . . . . . .   4
  85.    1.2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .   5
  86.    1.3.  Protocol Overview  . . . . . . . . . . . . . . . . . . . .   6
  87.    1.3.1.  Control Connection Overview  . . . . . . . . . . . . . .   7
  88.    1.3.2.  Tunnel Protocol Overview . . . . . . . . . . . . . . . .   7
  89.    1.4.  Message Format and Protocol Extensibility  . . . . . . . .   8
  90.    2.  Control Connection Protocol Specification  . . . . . . . . .  10
  91.    2.1.  Start-Control-Connection-Request . . . . . . . . . . . . .  10
  92.    2.2.  Start-Control-Connection-Reply . . . . . . . . . . . . . .  12
  93.    2.3.  Stop-Control-Connection-Request  . . . . . . . . . . . . .  15
  94.    2.4.  Stop-Control-Connection-Reply  . . . . . . . . . . . . . .  16
  95.    2.5.  Echo-Request . . . . . . . . . . . . . . . . . . . . . . .  17
  96.    2.6.  Echo-Reply . . . . . . . . . . . . . . . . . . . . . . . .  18
  97.    2.7.  Outgoing-Call-Request  . . . . . . . . . . . . . . . . . .  19
  98.    2.8.  Outgoing-Call-Reply  . . . . . . . . . . . . . . . . . . .  22
  99.    2.9.  Incoming-Call-Request  . . . . . . . . . . . . . . . . . .  25
  100.    2.10.  Incoming-Call-Reply . . . . . . . . . . . . . . . . . . .  28
  101.    2.11.  Incoming-Call-Connected . . . . . . . . . . . . . . . . .  29
  102.    2.12.  Call-Clear-Request  . . . . . . . . . . . . . . . . . . .  31
  103.    2.13.  Call-Disconnect-Notify  . . . . . . . . . . . . . . . . .  32
  104.    2.14.  WAN-Error-Notify  . . . . . . . . . . . . . . . . . . . .  33
  105.    2.15.  Set-Link-Info . . . . . . . . . . . . . . . . . . . . . .  35
  106.    2.16.  General Error Codes . . . . . . . . . . . . . . . . . . .  36
  107.    3.  Control Connection Protocol Operation  . . . . . . . . . . .  36
  108.    3.1.  Control Connection States  . . . . . . . . . . . . . . . .  37
  109.    3.1.1.  Control Connection Originator (may be PAC or PNS)  . . .  37
  110.    3.1.2.  Control connection Receiver (may be PAC or PNS)  . . . .  39
  111.  
  112.  
  113.  
  114. Hamzeh, et al.               Informational                      [Page 2]
  115.  
  116. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  117.  
  118.  
  119.    3.1.3.  Start Control Connection Initiation Request Collision  .  40
  120.    3.1.4.  Keep Alives and Timers . . . . . . . . . . . . . . . . .  40
  121.    3.2.  Call States  . . . . . . . . . . . . . . . . . . . . . . .  41
  122.    3.2.1.  Timing considerations  . . . . . . . . . . . . . . . . .  41
  123.    3.2.2.  Call ID Values . . . . . . . . . . . . . . . . . . . . .  41
  124.    3.2.3.  Incoming Calls . . . . . . . . . . . . . . . . . . . . .  41
  125.    3.2.3.1.  PAC Incoming Call States . . . . . . . . . . . . . . .  42
  126.    3.2.3.2.  PNS Incoming Call States . . . . . . . . . . . . . . .  43
  127.    3.2.4.  Outgoing Calls . . . . . . . . . . . . . . . . . . . . .  44
  128.    3.2.4.1.  PAC Outgoing Call States . . . . . . . . . . . . . . .  45
  129.    3.2.4.2.  PNS Outgoing Call States . . . . . . . . . . . . . . .  46
  130.    4.  Tunnel Protocol Operation  . . . . . . . . . . . . . . . . .  47
  131.    4.1.  Enhanced GRE header  . . . . . . . . . . . . . . . . . . .  47
  132.    4.2.  Sliding Window Protocol  . . . . . . . . . . . . . . . . .  49
  133.    4.2.1.  Initial Window Size  . . . . . . . . . . . . . . . . . .  49
  134.    4.2.2.  Closing the Window . . . . . . . . . . . . . . . . . . .  49
  135.    4.2.3.  Opening the Window . . . . . . . . . . . . . . . . . . .  50
  136.    4.2.4.  Window Overflow  . . . . . . . . . . . . . . . . . . . .  50
  137.    4.2.5.  Multi-packet Acknowledgment  . . . . . . . . . . . . . .  50
  138.    4.3.  Out-of-sequence Packets  . . . . . . . . . . . . . . . . .  50
  139.    4.4.  Acknowledgment Time-Outs . . . . . . . . . . . . . . . . .  51
  140.    4.4.1.  Calculating Adaptive Acknowledgment Time-Out . . . . . .  53
  141.    4.4.2.  Congestion Control: Adjusting for Time-Out . . . . . . .  54
  142.    5.  Security Considerations  . . . . . . . . . . . . . . . . . .  54
  143.    6.  Authors' Addresses . . . . . . . . . . . . . . . . . . . . .  55
  144.    7.  References . . . . . . . . . . . . . . . . . . . . . . . . .  56
  145.    8.  Full Copyright Statement . . . . . . . . . . . . . . . . . .  57
  146.  
  147. 1.  Introduction
  148.  
  149.    PPTP allows existing Network Access Server (NAS) functions to be
  150.    separated using a client-server architecture. Traditionally, the
  151.    following functions are implemented by a NAS:
  152.  
  153.       1) Physical native interfacing to PSTN or ISDN and control of
  154.          external modems or terminal adapters.
  155.  
  156.          A NAS may interface directly to a telco analog or digital
  157.          circuit or attach via an external modem or terminal adapter.
  158.          Control of a circuit-switched connection is accomplished with
  159.          either modem control or DSS1 ISDN call control protocols.
  160.  
  161.          The NAS, in conjunction with the modem or terminal adapters,
  162.          may perform rate adaption, analog to digital conversion, sync
  163.          to async conversion or a number of other alterations of data
  164.          streams.
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Hamzeh, et al.               Informational                      [Page 3]
  171.  
  172. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  173.  
  174.  
  175.       2) Logical termination of a Point-to-Point-Protocol (PPP) Link
  176.          Control Protocol (LCP) session.
  177.  
  178.       3) Participation in PPP authentication protocols [3,9,10].
  179.  
  180.       4) Channel aggregation and bundle management for PPP Multilink
  181.          Protocol.
  182.  
  183.       5) Logical termination of various PPP network control protocols
  184.          (NCP).
  185.  
  186.       6) Multiprotocol routing and bridging between NAS interfaces.
  187.  
  188.    PPTP divides these functions between the PAC and PNS. The PAC is
  189.    responsible for functions 1, 2, and possibly 3. The PNS may be
  190.    responsible for function 3 and is responsible for functions 4, 5, and
  191.    6.  The protocol used to carry PPP protocol data units (PDUs) between
  192.    the PAC and PNS, as well as call control and management is addressed
  193.    by PPTP.
  194.  
  195.    The decoupling of NAS functions offers these benefits:
  196.  
  197.       Flexible IP address management. Dial-in users may maintain a
  198.       single IP address as they dial into different PACs as long as they
  199.       are served from a common PNS. If an enterprise network uses
  200.       unregistered addresses, a PNS associated with the enterprise
  201.       assigns addresses meaningful to the private network.
  202.  
  203.       Support of non-IP protocols for dial networks behind IP networks.
  204.       This allows Appletalk and IPX, for example to be tunneled through
  205.       an IP-only provider. The PAC need not be capable of processing
  206.       these protocols.
  207.  
  208.       A solution to the "multilink hunt-group splitting" problem.
  209.       Multilink PPP, typically used to aggregate ISDN B channels,
  210.       requires that all of the channels composing a multilink bundle be
  211.       grouped at a single NAS.  Since a multilink PPP bundle can be
  212.       handled by a single PNS, the channels comprising the bundle may be
  213.       spread across multiple PACs.
  214.  
  215. 1.1.  Protocol Goals and Assumptions
  216.  
  217.    The PPTP protocol is implemented only by the PAC and PNS. No other
  218.    systems need to be aware of PPTP. Dial networks may be connected to a
  219.    PAC without being aware of PPTP. Standard PPP client software should
  220.    continue to operate on tunneled PPP links.
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Hamzeh, et al.               Informational                      [Page 4]
  227.  
  228. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  229.  
  230.  
  231.    PPTP can also be used to tunnel a PPP session over an IP network. In
  232.    this configuration the PPTP tunnel and the PPP session runs between
  233.    the same two machines with the caller acting as a PNS.
  234.  
  235.    It is envisioned that there will be a many-to-many relationship
  236.    between PACs and PNSs.  A PAC may provide service to many PNSs. For
  237.    example, an Internet service provider may choose to support PPTP for
  238.    a number of private network clients and create VPNs for them. Each
  239.    private network may operate one or more PNSs. A single PNS may
  240.    associate with many PACs to concentrate traffic from a large number
  241.    of geographically diverse sites.
  242.  
  243.    PPTP uses an extended version of GRE to carry user PPP packets. These
  244.    enhancements allow for low-level congestion and flow control to be
  245.    provided on the tunnels used to carry user data between PAC and PNS.
  246.    This mechanism allows for efficient use of the bandwidth available
  247.    for the tunnels and avoids unnecessary retransmisions and buffer
  248.    overruns.  PPTP does not dictate the particular algorithms to be used
  249.    for this low level control but it does define the parameters that
  250.    must be communicated in order to allow such algorithms to work.
  251.    Suggested algorithms are included in section 4.
  252.  
  253. 1.2.  Terminology
  254.  
  255.    Analog Channel
  256.  
  257.       A circuit-switched communication path which is intended to carry
  258.       3.1 Khz audio in each direction.
  259.  
  260.    Digital Channel
  261.  
  262.       A circuit-switched communication path which is intended to carry
  263.       digital information in each direction.
  264.  
  265.    Call
  266.  
  267.       A connection or attempted connection between two terminal
  268.       endpoints on a PSTN or ISDN -- for example, a telephone call
  269.       between two modems.
  270.  
  271.    Control Connection
  272.  
  273.       A control connection is created for each PAC, PNS pair and
  274.       operates over TCP [4]. The control connection governs aspects of
  275.       the tunnel and of sessions assigned to the tunnel.
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Hamzeh, et al.               Informational                      [Page 5]
  283.  
  284. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  285.  
  286.  
  287.    Dial User
  288.  
  289.       An end-system or router attached to an on-demand PSTN or ISDN
  290.       which is either the initiator or recipient of a call.
  291.  
  292.    Network Access Server (NAS)
  293.  
  294.       A device providing temporary, on-demand network access to users.
  295.       This access is point-to-point using PSTN or ISDN lines.
  296.  
  297.    PPTP Access Concentrator (PAC)
  298.  
  299.       A device attached to one or more PSTN or ISDN lines capable of PPP
  300.       operation and of handling the PPTP protocol. The PAC need only
  301.       implement TCP/IP to pass traffic to one or more PNSs. It may also
  302.       tunnel non-IP protocols.
  303.  
  304.    PPTP Network Server (PNS)
  305.  
  306.       A PNS is envisioned to operate on general-purpose computing/server
  307.       platforms. The PNS handles the server side of the PPTP protocol.
  308.       Since PPTP relies completely on TCP/IP and is independent of the
  309.       interface hardware, the PNS may use any combination of IP
  310.       interface hardware including LAN and WAN devices.
  311.  
  312.    Session
  313.  
  314.       PPTP is connection-oriented.  The PNS and PAC maintain state for
  315.       each user that is attached to a PAC.  A session is created when
  316.       end-to-end PPP connection is attempted between a dial user and the
  317.       PNS.  The datagrams related to a session are sent over the tunnel
  318.       between the PAC and PNS.
  319.  
  320.    Tunnel
  321.  
  322.       A tunnel is defined by a PNS-PAC pair.  The tunnel protocol is
  323.       defined by a modified version of GRE [1,2].  The tunnel carries
  324.       PPP datagrams between the PAC and the PNS.  Many sessions are
  325.       multiplexed on a single tunnel.  A control connection operating
  326.       over TCP controls the establishment, release, and maintenance of
  327.       sessions and of the tunnel itself.
  328.  
  329. 1.3.  Protocol Overview
  330.  
  331.    There are two parallel components of PPTP: 1) a Control Connection
  332.    between each PAC-PNS pair operating over TCP and 2) an IP tunnel
  333.    operating between the same PAC-PNS pair which is used to transport
  334.    GRE encapsulated PPP packets for user sessions between the pair.
  335.  
  336.  
  337.  
  338. Hamzeh, et al.               Informational                      [Page 6]
  339.  
  340. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  341.  
  342.  
  343. 1.3.1.  Control Connection Overview
  344.  
  345.    Before PPP tunneling can occur between a PAC and PNS, a control
  346.    connection must be established between them. The control connection
  347.    is a standard TCP session over which PPTP call control and management
  348.    information is passed. The control session is logically associated
  349.    with, but separate from, the sessions being tunneled through a PPTP
  350.    tunnel.  For each PAC-PNS pair both a tunnel and a control connection
  351.    exist. The control connection is responsible for establishment,
  352.    management, and release of sessions carried through the tunnel. It is
  353.    the means by which a PNS is notified of an incoming call at an
  354.    associated PAC, as well as the means by which a PAC is instructed to
  355.    place an outgoing dial call.
  356.  
  357.    A control connection can be established by either the PNS or the PAC.
  358.    Following the establishment of the required TCP connection, the PNS
  359.    and PAC establish the control connection using the Start-Control-
  360.    Connection-Request and -Reply messages.  These messages are also used
  361.    to exchange information about basic operating capabilities of the PAC
  362.    and PNS.  Once the control connection is established, the PAC or PNS
  363.    may initiate sessions by requesting outbound calls or responding to
  364.    inbound requests. The control connection may communicate changes in
  365.    operating characteristics of an individual user session with a Set-
  366.    Link-Info message.  Individual sessions may be released by either the
  367.    PAC or PNS, also through Control Connection messages.
  368.  
  369.    The control connection itself is maintained by keep-alive echo
  370.    messages.  This ensures that a connectivity failure between the PNS
  371.    and the PAC can be detected in a timely manner. Other failures can be
  372.    reported via the
  373.  
  374.    Wan-Error-Notify message, also on the control connection.
  375.  
  376.    It is intended that the control connection will also carry management
  377.    related messages in the future, such as a message allowing the PNS to
  378.    request the status of a given PAC; these message types have not yet
  379.    been defined.
  380.  
  381. 1.3.2.  Tunnel Protocol Overview
  382.  
  383.    PPTP requires the establishment of a tunnel for each communicating
  384.    PNS-PAC pair.  This tunnel is used to carry all user session PPP
  385.    packets for sessions involving a given PNS-PAC pair.  A key which is
  386.    present in the GRE header indicates which session a particular PPP
  387.    packet belongs to.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Hamzeh, et al.               Informational                      [Page 7]
  395.  
  396. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  397.  
  398.  
  399.    In this manner, PPP packets are multiplexed and demultiplexed over a
  400.    single tunnel between a given PNS-PAC pair.  The value to use in the
  401.    key field is established by the call establishment procedure which
  402.    takes place on the control connection.
  403.  
  404.    The GRE header also contains acknowledgment and sequencing
  405.    information that is used to perform some level of congestion-control
  406.    and error detection over the tunnel.  Again the control connection is
  407.    used to determine rate and buffering parameters that are used to
  408.    regulate the flow of PPP packets for a particular session over the
  409.    tunnel.  PPTP does not specify the particular algorithms to use for
  410.    congestion-control and flow-control.  Suggested algorithms for the
  411.    determination of adaptive time-outs to recover from dropped data or
  412.    acknowledgments on the tunnel are included in section 4.4 of this
  413.    document.
  414.  
  415. 1.4.  Message Format and Protocol Extensibility
  416.  
  417.    PPTP defines a set of messages sent as TCP data on the control
  418.    connection between a PNS and a given PAC.  The TCP session for the
  419.    control connection is established by initiating a TCP connection to
  420.    port 1723 [6]. The source port is assigned to any unused port number.
  421.  
  422.    Each PPTP Control Connection message begins with an 8 octet fixed
  423.    header portion.  This fixed header contains the following: the total
  424.    length of the message, the PPTP Message Type indicator, and a "Magic
  425.    Cookie".
  426.  
  427.    Two Control Connection message types are indicated by the PPTP
  428.    Message Type field:
  429.  
  430.          1 - Control Message
  431.          2 - Management Message
  432.  
  433.    Management messages are currently not defined.
  434.  
  435.    The Magic Cookie is always sent as the constant 0x1A2B3C4D.  Its
  436.    basic purpose is to allow the receiver to ensure that it is properly
  437.    synchronized with the TCP data stream.  It should not be used as a
  438.    means for resynchronizing the TCP data stream in the event that a
  439.    transmitter issues an improperly formatted message.  Loss of
  440.    synchronization must result in immediate closing of the control
  441.    connection's TCP session.
  442.  
  443.    For clarity, all Control Connection message templates in the next
  444.    section include the entire PPTP Control Connection message header.
  445.    Numbers preceded by 0x are hexadecimal values.
  446.  
  447.  
  448.  
  449.  
  450. Hamzeh, et al.               Informational                      [Page 8]
  451.  
  452. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  453.  
  454.  
  455. The currently defined Control Messages, grouped by function, are:
  456.  
  457.          Control Message                        Message Code
  458.  
  459.          (Control Connection Management)
  460.  
  461.          Start-Control-Connection-Request            1
  462.          Start-Control-Connection-Reply              2
  463.          Stop-Control-Connection-Request             3
  464.          Stop-Control-Connection-Reply               4
  465.          Echo-Request                                5
  466.          Echo-Reply                                  6
  467.  
  468.          (Call Management)
  469.  
  470.          Outgoing-Call-Request                       7
  471.          Outgoing-Call-Reply                         8
  472.          Incoming-Call-Request                       9
  473.          Incoming-Call-Reply                        10
  474.          Incoming-Call-Connected                    11
  475.          Call-Clear-Request                         12
  476.          Call-Disconnect-Notify                     13
  477.  
  478.          (Error Reporting)
  479.  
  480.          WAN-Error-Notify                           14
  481.  
  482.          (PPP Session Control)
  483.  
  484.          Set-Link-Info                              15
  485.  
  486.    The Start-Control-Connection-Request and -Reply messages determine
  487.    which version of the Control Connection protocol will be used.  The
  488.    version number field carried in these messages consists of a version
  489.    number in the high octet and a revision number in the low octet.
  490.    Version handling is described in section 2. The current value of the
  491.    version number field is 0x0100 for version 1, revision 0.
  492.  
  493.    The use of the GRE-like header for the encapsulation of PPP user
  494.    packets is specified in section 4.1.
  495.  
  496.    The MTU for the user data packets encapsulated in GRE is 1532 octets,
  497.    not including the IP and GRE headers.
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Hamzeh, et al.               Informational                      [Page 9]
  507.  
  508. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  509.  
  510.  
  511. 2.  Control Connection Protocol Specification
  512.  
  513.    Control Connection messages are used to establish and clear user
  514.    sessions.  The first set of Control Connection messages are used to
  515.    maintain the control connection itself.  The control connection is
  516.    initiated by either the PNS or PAC after they establish the
  517.    underlying TCP connection.  The procedure and configuration
  518.    information required to determine which TCP connections are
  519.    established is not covered by this protocol.
  520.  
  521.    The following Control Connection messages are all sent as user data
  522.    on the established TCP connection between a given PNS-PAC pair.  Note
  523.    that care has been taken to ensure that all word (2 octet) and
  524.    longword (4 octet) values begin on appropriate boundaries.  All data
  525.    is sent in network order (high order octets first).  Any "reserved"
  526.    fields MUST be sent as 0 values to allow for protocol extensibility.
  527.  
  528. 2.1.  Start-Control-Connection-Request
  529.  
  530.    The Start-Control-Connection-Request is a PPTP control message used
  531.    to establish the control connection between a PNS and a PAC.  Each
  532.    PNS-PAC pair requires a dedicated control connection to be
  533.    established.  A control connection must be established before any
  534.    other PPTP messages can be issued.  The establishment of the control
  535.    connection can be initiated by either the PNS or PAC.  A procedure
  536.    which handles the occurrence of a collision between PNS and PAC
  537.    Start-Control-Connection-Requests is described in section 3.1.3.
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Hamzeh, et al.               Informational                     [Page 10]
  563.  
  564. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  565.  
  566.  
  567.        0                   1                   2                   3
  568.        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
  569.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  570.       |             Length            |       PPTP Message Type       |
  571.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  572.       |                         Magic Cookie                          |
  573.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  574.       |     Control Message Type      |           Reserved0           |
  575.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  576.       |       Protocol Version        |           Reserved1           |
  577.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  578.       |                     Framing Capabilities                      |
  579.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  580.       |                      Bearer Capabilities                      |
  581.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  582.       |       Maximum Channels        |       Firmware Revision       |
  583.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  584.       |                                                               |
  585.       +                     Host Name (64 octets)                     +
  586.       |                                                               |
  587.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  588.       |                                                               |
  589.       +                   Vendor String (64 octets)                   +
  590.       |                                                               |
  591.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  592.  
  593.       Length                   Total length in octets of this PPTP
  594.                                message, including the entire PPTP
  595.                                header.
  596.  
  597.       PPTP Message Type        1 for Control Message.
  598.  
  599.       Magic Cookie             0x1A2B3C4D. This constant value is used
  600.                                as a sanity check on received messages
  601.                                (see section 1.4).
  602.  
  603.       Control Message Type     1 for Start-Control-Connection-Request.
  604.  
  605.       Reserved0                This field MUST be 0.
  606.  
  607.       Protocol Version         The version of the PPTP protocol that the
  608.                                sender wishes to use.
  609.  
  610.       Reserved1                This field MUST be 0.
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Hamzeh, et al.               Informational                     [Page 11]
  619.  
  620. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  621.  
  622.  
  623.    Framing Capabilities     A set of bits indicating the type of framing
  624.                             that the sender of this message can provide.
  625.                             The currently defined bit settings are:
  626.  
  627.                                1 - Asynchronous Framing supported
  628.  
  629.                                2 - Synchronous Framing supported
  630.  
  631.    Bearer Capabilities      A set of bits indicating the bearer
  632.                             capabilities that the sender of this message
  633.                             can provide.  The currently defined bit
  634.                             settings are:
  635.  
  636.                                1 - Analog access supported
  637.  
  638.                                2 - Digital access supported
  639.  
  640.    Maximum Channels         The total number of individual PPP sessions
  641.                             this PAC can support.  In Start-Control-
  642.                             Connection-Requests issued by the PNS, this
  643.                             value SHOULD be set to 0.  It MUST be
  644.                             ignored by the PAC.
  645.  
  646.    Firmware Revision        This field contains the firmware revision
  647.                             number of the issuing PAC, when issued by
  648.                             the PAC, or the version of the PNS PPTP
  649.                             driver if issued by the PNS.
  650.  
  651.    Host Name                A 64 octet field containing the DNS name of
  652.                             the issuing PAC or PNS.  If less than 64
  653.                             octets in length, the remainder of this
  654.                             field SHOULD be filled with octets of value
  655.                             0.
  656.  
  657.    Vendor Name              A 64 octet field containing a vendor
  658.                             specific string describing the type of PAC
  659.                             being used, or the type of PNS software
  660.                             being used if this request is issued by the
  661.                             PNS.  If less than 64 octets in length, the
  662.                             remainder of this field SHOULD be filled
  663.                             with octets of value 0.
  664.  
  665. 2.2.  Start-Control-Connection-Reply
  666.  
  667.    The Start-Control-Connection-Reply is a PPTP control message sent in
  668.    reply to a received Start-Control-Connection-Request message.  This
  669.    message contains a result code indicating the result of the control
  670.    connection establishment attempt.
  671.  
  672.  
  673.  
  674. Hamzeh, et al.               Informational                     [Page 12]
  675.  
  676. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  677.  
  678.  
  679.        0                   1                   2                   3
  680.        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
  681.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  682.       |             Length            |       PPTP Message Type       |
  683.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  684.       |                         Magic Cookie                          |
  685.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  686.       |     Control Message Type      |           Reserved0           |
  687.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  688.       |       Protocol Version        |  Result Code  |  Error Code   |
  689.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  690.       |                      Framing Capability                       |
  691.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  692.       |                       Bearer Capability                       |
  693.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  694.       |       Maximum Channels        |       Firmware Revision       |
  695.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  696.       |                                                               |
  697.       +                     Host Name (64 octets)                     +
  698.       |                                                               |
  699.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  700.       |                                                               |
  701.       +                   Vendor String (64 octets)                   +
  702.       |                                                               |
  703.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  704.  
  705.    Length                   Total length in octets of this PPTP message,
  706.                             including the entire PPTP header.
  707.  
  708.    PPTP Message Type        1 for Control Message.
  709.  
  710.    Magic Cookie             0x1A2B3C4D.
  711.  
  712.    Control Message Type     2 for Start-Control-Connection-Reply.
  713.  
  714.    Reserved0                This field MUST be 0.
  715.  
  716.    Protocol Version         The version of the PPTP protocol that the
  717.                             sender wishes to use.
  718.  
  719.    Result Code              Indicates the result of the command channel
  720.                             establishment attempt.  Current valid Result
  721.                             Code values are:
  722.  
  723.                                   1 - Successful channel establishment
  724.  
  725.                                   2 - General error -- Error Code
  726.                                       indicates the problem
  727.  
  728.  
  729.  
  730. Hamzeh, et al.               Informational                     [Page 13]
  731.  
  732. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  733.  
  734.  
  735.                                   3 - Command channel already exists;
  736.  
  737.                                   4 - Requester is not authorized to
  738.                                       establish a command channel
  739.  
  740.                                   5 - The protocol version of the
  741.                                       requester is not supported
  742.  
  743.    Error Code               This field is set to 0 unless a "General
  744.                             Error" exists, in which case Result Code is
  745.                             set to 2 and this field is set to the value
  746.                             corresponding to the general error condition
  747.                             as specified in section 2.2.
  748.  
  749.    Framing Capabilities     A set of bits indicating the type of framing
  750.                             that the sender of this message can provide.
  751.                             The currently defined bit settings are:
  752.  
  753.                                   1 - Asynchronous Framing supported
  754.  
  755.                                   2 - Synchronous Framing supported.
  756.  
  757.    Bearer Capabilities      A set of bits indicating the bearer
  758.                             capabilities that the sender of this message
  759.                             can provide.  The currently defined bit
  760.                             settings are:
  761.  
  762.                                   1 - Analog access supported
  763.  
  764.                                   2 - Digital access supported
  765.  
  766.    Maximum Channels         The total number of individual PPP sessions
  767.                             this PAC can support.  In a Start-Control-
  768.                             Connection-Reply issued by the PNS, this
  769.                             value SHOULD be set to 0 and it must be
  770.                             ignored by the PAC. The PNS MUST NOT use
  771.                             this value to try to track the remaining
  772.                             number of PPP sessions that the PAC will
  773.                             allow.
  774.  
  775.    Firmware Revision        This field contains the firmware revision
  776.                             number of the issuing PAC, or the version of
  777.                             the PNS PPTP driver if issued by the PNS.
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Hamzeh, et al.               Informational                     [Page 14]
  787.  
  788. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  789.  
  790.  
  791.    Host Name                A 64 octet field containing the DNS name of
  792.                             the issuing PAC or PNS.  If less than 64
  793.                             octets in length, the remainder of this
  794.                             field SHOULD be filled with octets of value
  795.                             0.
  796.  
  797.    Vendor Name              A 64 octet field containing a vendor
  798.                             specific string describing the type of PAC
  799.                             being used, or the type of PNS software
  800.                             being used if this request is issued by the
  801.                             PNS.  If less than 64 octets in length, the
  802.                             remainder of this field SHOULD be filled
  803.                             with octets of value 0.
  804.  
  805. 2.3.  Stop-Control-Connection-Request
  806.  
  807.    The Stop-Control-Connection-Request is a PPTP control message sent by
  808.    one peer of a PAC-PNS control connection to inform the other peer
  809.    that the control connection should be closed.  In addition to closing
  810.    the control connection, all active user calls are implicitly cleared.
  811.    The reason for issuing this request is indicated in the Reason field.
  812.  
  813.        0                   1                   2                   3
  814.        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
  815.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  816.       |             Length            |       PPTP Message Type       |
  817.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  818.       |                         Magic Cookie                          |
  819.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  820.       |     Control Message Type      |           Reserved0           |
  821.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  822.       |    Reason     |   Reserved1   |           Reserved2           |
  823.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  824.  
  825.    Length                   Total length in octets of this PPTP message,
  826.                             including the entire PPTP header.
  827.  
  828.    PPTP Message Type        1 for Control Message.
  829.  
  830.    Magic Cookie             0x1A2B3C4D.
  831.  
  832.    Control Message Type     3 for Stop-Control-Connection-Request.
  833.  
  834.    Reserved0                This field MUST be 0.
  835.  
  836.    Reason                   Indicates the reason for the control
  837.                             connection being closed. Current valid
  838.                             Reason values are:
  839.  
  840.  
  841.  
  842. Hamzeh, et al.               Informational                     [Page 15]
  843.  
  844. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  845.  
  846.  
  847.                                   1 (None) - General request to clear
  848.                                     control connection
  849.  
  850.                                   2 (Stop-Protocol) - Can't support
  851.                                     peer's version of the protocol
  852.  
  853.                                   3 (Stop-Local-Shutdown) - Requester is
  854.                                     being shut down
  855.  
  856.       Reserved1, Reserved2     These fields MUST be 0.
  857.  
  858. 2.4.  Stop-Control-Connection-Reply
  859.  
  860.    The Stop-Control-Connection-Reply is a PPTP control message sent by
  861.    one peer of a PAC-PNS control connection upon receipt of a Stop-
  862.    Control-Connection-Request from the other peer.
  863.  
  864.        0                   1                   2                   3
  865.        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
  866.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  867.       |            Length             |       PPTP Message Type       |
  868.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  869.       |                         Magic Cookie                          |
  870.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  871.       |     Control Message Type      |           Reserved0           |
  872.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  873.       |  Result Code  |   Error Code  |           Reserved1           |
  874.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  875.  
  876.    Length                   Total length in octets of this PPTP message,
  877.                             including the entire PPTP header.
  878.  
  879.    PPTP Message Type        1 for Control Message.
  880.  
  881.    Magic Cookie             0x1A2B3C4D.
  882.  
  883.    Control Message Type     4 for Stop-Control-Connection-Reply.
  884.  
  885.    Reserved0                This field MUST be 0.
  886.  
  887.    Result Code              Indicates the result of the attempt to close
  888.                             the control connection. Current valid Result
  889.                             Code values are:
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Hamzeh, et al.               Informational                     [Page 16]
  899.  
  900. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  901.  
  902.  
  903.                                   1 (OK) - Control connection closed
  904.  
  905.                                   2 (General Error) - Control connection
  906.                                     not closed for reason indicated in
  907.                                     Error Code
  908.  
  909.    Error Code               This field is set to 0 unless a "General
  910.                             Error" exists, in which case Result Code is
  911.                             set to 2 and this field is set to the value
  912.                             corresponding to the general error condition
  913.                             as specified in section 2.2.
  914.  
  915.    Reserved1                This field MUST be 0.
  916.  
  917. 2.5.  Echo-Request
  918.  
  919.    The Echo-Request is a PPTP control message sent by either peer of a
  920.    PAC-PNS control connection. This control message is used as a "keep-
  921.    alive" for the control connection.  The receiving peer issues an
  922.    Echo-Reply to each Echo-Request received. As specified in section
  923.    3.1.4, if the sender does not receive an Echo-Reply in response to an
  924.    Echo-Request, it will eventually clear the control connection.
  925.  
  926.        0                   1                   2                   3
  927.        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
  928.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  929.       |            Length             |       PPTP Message Type       |
  930.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  931.       |                         Magic Cookie                          |
  932.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  933.       |     Control Message Type      |           Reserved0           |
  934.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  935.       |                          Identifier                           |
  936.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  937.  
  938.    Length                   Total length in octets of this PPTP message,
  939.                             including the entire PPTP header.
  940.  
  941.    PPTP Message Type        1 for Control Message.
  942.  
  943.    Magic Cookie             0x1A2B3C4D.
  944.  
  945.    Control Message Type     5 for Echo-Request.
  946.  
  947.    Reserved0                This field MUST be 0.
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Hamzeh, et al.               Informational                     [Page 17]
  955.  
  956. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  957.  
  958.  
  959.    Identifier               A value set by the sender of the Echo-
  960.                             Request that is used to match the reply with
  961.                             the corresponding request.
  962.  
  963. 2.6.  Echo-Reply
  964.  
  965.    The Echo-Reply is a PPTP control message sent by either peer of a
  966.    PAC-PNS control connection in response to the receipt of an Echo-
  967.    Request.
  968.  
  969.        0                   1                   2                   3
  970.        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
  971.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  972.       |            Length             |      PPTP Message Type        |
  973.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  974.       |                         Magic Cookie                          |
  975.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  976.       |     Control Message Type      |           Reserved0           |
  977.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  978.       |                          Identifier                           |
  979.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  980.       |  Result Code  |   Error Code  |           Reserved1           |
  981.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  982.  
  983.    Length                   Total length in octets of this PPTP message,
  984.                             including the entire PPTP header.
  985.  
  986.    PPTP Message Type        1 for Control Message.
  987.  
  988.    Magic Cookie             0x1A2B3C4D.
  989.  
  990.    Control Message Type     6 for Echo-Reply.
  991.  
  992.    Reserved0                This field MUST be 0.
  993.  
  994.    Identifier               The contents of the identify field from the
  995.                             received Echo-Request is copied to this
  996.                             field.
  997.  
  998.    Result Code              Indicates the result of the receipt of the
  999.                             Echo-Request. Current valid Result Code
  1000.                             values are:
  1001.  
  1002.                                   1 (OK) - The Echo-Reply is valid
  1003.  
  1004.                                   2 (General Error) - Echo-Request not
  1005.                                     accepted for the reason indicated in
  1006.                                     Error Code
  1007.  
  1008.  
  1009.  
  1010. Hamzeh, et al.               Informational                     [Page 18]
  1011.  
  1012. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1013.  
  1014.  
  1015.    Error Code               This field is set to 0 unless a "General
  1016.                             Error" condition exists, in which case
  1017.                             Result Code is set to 2 and this field is
  1018.                             set to the value corresponding to the
  1019.                             general error condition as specified in
  1020.                             section 2.2.
  1021.  
  1022.    Reserved1                This field MUST be 0.
  1023.  
  1024. 2.7.  Outgoing-Call-Request
  1025.  
  1026.    The Outgoing-Call-Request is a PPTP control message sent by the PNS
  1027.    to the PAC to indicate that an outbound call from the PAC is to be
  1028.    established.  This request provides the PAC with information required
  1029.    to make the call. It also provides information to the PAC that is
  1030.    used to regulate the transmission of data to the PNS for this session
  1031.    once it is established.
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Hamzeh, et al.               Informational                     [Page 19]
  1067.  
  1068. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1069.  
  1070.  
  1071.        0                   1                   2                   3
  1072.        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
  1073.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1074.       |            Length             |       PPTP Message Type       |
  1075.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1076.       |                         Magic Cookie                          |
  1077.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1078.       |     Control Message Type      |           Reserved0           |
  1079.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1080.       |            Call ID            |      Call Serial Number       |
  1081.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1082.       |                          Minimum BPS                          |
  1083.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1084.       |                          Maximum BPS                          |
  1085.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1086.       |                          Bearer Type                          |
  1087.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1088.       |                         Framing Type                          |
  1089.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1090.       |   Packet Recv. Window Size    |    Packet Processing Delay    |
  1091.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1092.       |      Phone Number Length      |           Reserved1           |
  1093.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1094.       |                                                               |
  1095.       +                   Phone Number (64 octets)                    +
  1096.       |                                                               |
  1097.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1098.       |                                                               |
  1099.       +                    Subaddress (64 octets)                     +
  1100.       |                                                               |
  1101.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1102.  
  1103.    Length                   Total length in octets of this PPTP message,
  1104.                             including the entire PPTP header.
  1105.  
  1106.    PPTP Message Type        1 for Control Message.
  1107.  
  1108.    Magic Cookie             0x1A2B3C4D.
  1109.  
  1110.    Control Message Type     7 for Outgoing-Call-Request.
  1111.  
  1112.    Reserved0                This field MUST be 0.
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Hamzeh, et al.               Informational                     [Page 20]
  1123.  
  1124. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1125.  
  1126.  
  1127.    Call ID                  A unique identifier, unique to a particular
  1128.                             PAC-PNS pair assigned by the PNS to this
  1129.                             session.  It is used to multiplex and
  1130.                             demultiplex data sent over the tunnel
  1131.                             between the PNS and PAC involved in this
  1132.                             session.
  1133.  
  1134.    Call Serial Number       An identifier assigned by the PNS to this
  1135.                             session for the purpose of identifying this
  1136.                             particular session in logged session
  1137.                             information.  Unlike the Call ID, both the
  1138.                             PNS and PAC associate the same Call Serial
  1139.                             Number with a given session. The combination
  1140.                             of IP address and call serial number SHOULD
  1141.                             be unique.
  1142.  
  1143.    Minimum BPS              The lowest acceptable line speed (in
  1144.                             bits/second) for this session.
  1145.  
  1146.    Maximum BPS              The highest acceptable line speed (in
  1147.                             bits/second) for this session.
  1148.  
  1149.    Bearer Type              A value indicating the bearer capability
  1150.                             required for this outgoing call.  The
  1151.                             currently defined values are:
  1152.  
  1153.                                   1 - Call to be placed on an analog
  1154.                                       channel
  1155.  
  1156.                                   2 - Call to be placed on a digital
  1157.                                       channel
  1158.  
  1159.                                   3 - Call can be placed on any type of
  1160.                                       channel
  1161.  
  1162.    Framing Type             A value indicating the type of PPP framing
  1163.                             to be used for this outgoing call.
  1164.  
  1165.                                   1 - Call to use Asynchronous framing
  1166.  
  1167.                                   2 - Call to use Synchronous framing
  1168.  
  1169.                                   3 - Call can use either type of
  1170.                                       framing
  1171.  
  1172.    Packet Recv. Window Size The number of received data packets the PNS
  1173.                             will buffer for this session.
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Hamzeh, et al.               Informational                     [Page 21]
  1179.  
  1180. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1181.  
  1182.  
  1183.    Packet Processing Delay  A measure of the packet processing delay
  1184.                             that might be imposed on data sent to the
  1185.                             PNS from the PAC.  This value is specified
  1186.                             in units of 1/10 seconds.  For the PNS this
  1187.                             number should be very small.  See section
  1188.                             4.4 for a description of how this value is
  1189.                             determined and used.
  1190.  
  1191.    Phone Number Length      The actual number of valid digits in the
  1192.                             Phone Number field.
  1193.  
  1194.    Reserved1                This field MUST be 0.
  1195.  
  1196.    Phone Number             The number to be dialed to establish the
  1197.                             outgoing session.  For ISDN and analog calls
  1198.                             this field is an ASCII string.  If the Phone
  1199.                             Number is less than 64 octets in length, the
  1200.                             remainder of this field is filled with
  1201.                             octets of value 0.
  1202.  
  1203.    Subaddress               A 64 octet field used to specify additional
  1204.                             dialing information.  If the subaddress is
  1205.                             less than 64 octets long, the remainder of
  1206.                             this field is filled with octets of value 0.
  1207.  
  1208. 2.8.  Outgoing-Call-Reply
  1209.  
  1210.    The Outgoing-Call-Reply is a PPTP control message sent by the PAC to
  1211.    the PNS in response to a received Outgoing-Call-Request message.  The
  1212.    reply indicates the result of the outgoing call attempt.  It also
  1213.    provides information to the PNS about particular parameters used for
  1214.    the call.  It provides information to allow the PNS to regulate the
  1215.    transmission of data to the PAC for this session.
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Hamzeh, et al.               Informational                     [Page 22]
  1235.  
  1236. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1237.  
  1238.  
  1239.        0                   1                   2                   3
  1240.        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
  1241.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1242.       |            Length             |      PPTP Message Type        |
  1243.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1244.       |                         Magic Cookie                          |
  1245.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1246.       |     Control Message Type      |           Reserved0           |
  1247.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1248.       |            Call ID            |       Peer's Call ID          |
  1249.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1250.       |  Result Code  |  Error Code   |          Cause Code           |
  1251.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1252.       |                         Connect Speed                         |
  1253.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1254.       |   Packet Recv. Window Size    |    Packet Processing Delay    |
  1255.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1256.       |                      Physical Channel ID                      |
  1257.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1258.  
  1259.    Length                   Total length in octets of this PPTP message,
  1260.                             including the entire PPTP header.
  1261.  
  1262.    PPTP Message Type        1 for Control Message.
  1263.  
  1264.    Magic Cookie             0x1A2B3C4D.
  1265.  
  1266.    Control Message Type     8 for Outgoing-Call-Reply.
  1267.  
  1268.    Reserved0                This field MUST be 0.
  1269.  
  1270.    Call ID                  A unique identifier for the tunnel, assigned
  1271.                             by the PAC to this session.  It is used to
  1272.                             multiplex and demultiplex data sent over the
  1273.                             tunnel between the PNS and PAC involved in
  1274.                             this session.
  1275.  
  1276.    Peer's Call ID           This field is set to the value received in
  1277.                             the Call ID field of the corresponding
  1278.                             Outgoing-Call-Request message.  It is used
  1279.                             by the PNS to match the Outgoing-Call-Reply
  1280.                             with the Outgoing-Call-Request it issued. It
  1281.                             also is used as the value sent in the GRE
  1282.                             header for mux/demuxing.
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Hamzeh, et al.               Informational                     [Page 23]
  1291.  
  1292. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1293.  
  1294.  
  1295.    Result Code              This value indicates the result of the
  1296.                             Outgoing-Call-Request attempt.  Currently
  1297.                             valid values are:
  1298.  
  1299.                                   1 (Connected) - Call established with
  1300.                                     no errors
  1301.  
  1302.                                   2 (General Error) - Outgoing Call not
  1303.                                     established for the reason indicated
  1304.                                     in Error Code
  1305.  
  1306.                                   3 (No Carrier) - Outgoing Call failed
  1307.                                     due to no carrier detected
  1308.  
  1309.                                   4 (Busy) - Outgoing Call failed due to
  1310.                                     detection of a busy signal
  1311.  
  1312.                                   5 (No Dial Tone) - Outgoing Call
  1313.                                     failed due to lack of a dial tone
  1314.  
  1315.                                   6 (Time-out) - Outgoing Call was not
  1316.                                     established within time allotted by
  1317.                                     PAC
  1318.  
  1319.                                   7 (Do Not Accept) - Outgoing Call
  1320.                                     administratively prohibited
  1321.  
  1322.    Error Code               This field is set to 0 unless a "General
  1323.                             Error" condition exists, in which case
  1324.                             Result Code is set to 2 and this field is
  1325.                             set to the value corresponding to the
  1326.                             general error condition as specified in
  1327.                             section 2.2.
  1328.  
  1329.    Cause Code               This field gives additional failure
  1330.                             information.  Its value can vary depending
  1331.                             upon the type of call attempted.  For ISDN
  1332.                             call attempts it is the Q.931 cause code.
  1333.  
  1334.    Connect Speed            The actual connection speed used, in
  1335.                             bits/second.
  1336.  
  1337.    Packet Recv. Window Size The number of received data packets the PAC
  1338.                             will buffer for this session.
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Hamzeh, et al.               Informational                     [Page 24]
  1347.  
  1348. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1349.  
  1350.  
  1351.    Packet Processing Delay  A measure of the packet processing delay
  1352.                             that might be imposed on data sent to the
  1353.                             PAC from the PNS.  This value is specified
  1354.                             in units of 1/10 seconds.  For the PAC, this
  1355.                             number is related to the size of the buffer
  1356.                             used to hold packets to be sent to the
  1357.                             client and to the speed of the link to the
  1358.                             client.  This value should be set to the
  1359.                             maximum delay that can normally occur
  1360.                             between the time a packet arrives at the PAC
  1361.                             and is delivered to the client.  See section
  1362.                             4.4 for an example of how this value is
  1363.                             determined and used.
  1364.  
  1365.    Physical Channel ID      This field is set by the PAC in a vendor-
  1366.                             specific manner to the physical channel
  1367.                             number used to place this call.  It is used
  1368.                             for logging purposes only.
  1369.  
  1370. 2.9.  Incoming-Call-Request
  1371.  
  1372.    The Incoming-Call-Request is a PPTP control message sent by the PAC
  1373.    to the PNS to indicate that an inbound call is to be established from
  1374.    the PAC.  This request provides the PNS with parameter information
  1375.    for the incoming call.
  1376.  
  1377.    This message is the first in the "three-way handshake" used by PPTP
  1378.    for establishing incoming calls.  The PAC may defer answering the
  1379.    call until it has received an Incoming-Call-Reply from the PNS
  1380.    indicating that the call should be established. This mechanism allows
  1381.    the PNS to obtain sufficient information about the call before it is
  1382.    answered to determine whether the call should be answered or not.
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Hamzeh, et al.               Informational                     [Page 25]
  1403.  
  1404. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1405.  
  1406.  
  1407.        0                   1                   2                   3
  1408.        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
  1409.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1410.       |            Length             |       PPTP Message Type       |
  1411.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1412.       |                         Magic Cookie                          |
  1413.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1414.       |     Control Message Type      |           Reserved0           |
  1415.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1416.       |            Call ID            |      Call Serial Number       |
  1417.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1418.       |                       Call Bearer Type                        |
  1419.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1420.       |                      Physical Channel ID                      |
  1421.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1422.       |     Dialed Number Length      |     Dialing Number Length     |
  1423.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1424.       |                                                               |
  1425.       +                   Dialed Number (64 octets)                   +
  1426.       |                                                               |
  1427.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1428.       |                                                               |
  1429.       +                  Dialing Number (64 octets)                   +
  1430.       |
  1431.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1432.       |                                                               |
  1433.       +                    Subaddress (64 octets)                     +
  1434.       |                                                               |
  1435.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1436.  
  1437.    Length                   Total length in octets of this PPTP message,
  1438.                             including the entire PPTP header.
  1439.  
  1440.    PPTP Message Type        1 for Control Message.
  1441.  
  1442.    Magic Cookie             0x1A2B3C4D.
  1443.  
  1444.    Control Message Type     9 for Incoming-Call-Request.
  1445.  
  1446.    Reserved0                This field MUST be 0.
  1447.  
  1448.    Call ID                  A unique identifier for this tunnel,
  1449.                             assigned by the PAC to this session.  It is
  1450.                             used to multiplex and demultiplex data sent
  1451.                             over the tunnel between the PNS and PAC
  1452.                             involved in this session.
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Hamzeh, et al.               Informational                     [Page 26]
  1459.  
  1460. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1461.  
  1462.  
  1463.    Call Serial Number       An identifier assigned by the PAC to this
  1464.                             session for the purpose of identifying this
  1465.                             particular session in logged session
  1466.                             information.  Unlike the Call ID, both the
  1467.                             PNS and PAC associate the same Call Serial
  1468.                             Number to a given session. The combination
  1469.                             of IP address and call serial number should
  1470.                             be unique.
  1471.  
  1472.    Bearer Type              A value indicating the bearer capability
  1473.                             used for this incoming call.  Currently
  1474.                             defined values are:
  1475.  
  1476.                                   1 - Call is on an analog channel
  1477.  
  1478.                                   2 - Call is on a digital channel
  1479.  
  1480.    Physical Channel ID      This field is set by the PAC in a vendor-
  1481.                             specific manner to the number of the
  1482.                             physical channel this call arrived on.
  1483.  
  1484.    Dialed Number Length     The actual number of valid digits in the
  1485.                             Dialed Number field.
  1486.  
  1487.    Dialing Number Length    The actual number of valid digits in the
  1488.                             Dialing Number field.
  1489.  
  1490.    Dialed Number            The number that was dialed by the caller.
  1491.                             For ISDN and analog calls this field is an
  1492.                             ASCII string.  If the Dialed Number is less
  1493.                             than 64 octets in length, the remainder of
  1494.                             this field is filled with octets of value 0.
  1495.  
  1496.    Dialing Number           The number from which the call was placed.
  1497.                             For ISDN and analog calls this field is an
  1498.                             ASCII string.  If the Dialing Number is less
  1499.                             than 64 octets in length, the remainder of
  1500.                             this field is filled with octets of value 0.
  1501.  
  1502.    Subaddress               A 64 octet field used to specify additional
  1503.                             dialing information.  If the subaddress is
  1504.                             less than 64 octets long, the remainder of
  1505.                             this field is filled with octets of value 0.
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Hamzeh, et al.               Informational                     [Page 27]
  1515.  
  1516. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1517.  
  1518.  
  1519. 2.10.  Incoming-Call-Reply
  1520.  
  1521.    The Incoming-Call-Reply is a PPTP control message sent by the PNS to
  1522.    the PAC in response to a received Incoming-Call-Request message.  The
  1523.    reply indicates the result of the incoming call attempt.  It also
  1524.    provides information to allow the PAC to regulate the transmission of
  1525.    data to the PNS for this session.
  1526.  
  1527.    This message is the second in the three-way handshake used by PPTP
  1528.    for establishing incoming calls.  It indicates to the PAC whether the
  1529.    call should be answered or not.
  1530.  
  1531.        0                   1                   2                   3
  1532.        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
  1533.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1534.       |            Length             |       PPTP Message Type       |
  1535.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1536.       |                         Magic Cookie                          |
  1537.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1538.       |     Control Message Type      |           Reserved0           |
  1539.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1540.       |            Call ID            |       Peer's Call ID          |
  1541.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1542.       |  Result Code  |  Error Code   |   Packet Recv. Window Size    |
  1543.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1544.       |     Packet Transmit Delay     |           Reserved1           |
  1545.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1546.  
  1547.    Length                   Total length in octets of this PPTP message,
  1548.                             including the entire PPTP header.
  1549.  
  1550.    PPTP Message Type        1 for Control Message.
  1551.  
  1552.    Magic Cookie             0x1A2B3C4D.
  1553.  
  1554.    Control Message Type     10 for Incoming-Call-Reply.
  1555.  
  1556.    Reserved0                This field MUST be 0.
  1557.  
  1558.    Call ID                  A unique identifier for this tunnel assigned
  1559.                             by the PNS to this session.  It is used to
  1560.                             multiplex and demultiplex data sent over the
  1561.                             tunnel between the PNS and PAC involved in
  1562.                             this session.
  1563.  
  1564.    Peer's Call ID           This field is set to the value received in
  1565.                             the Call ID field of the corresponding
  1566.                             Incoming-Call-Request message. It is used by
  1567.  
  1568.  
  1569.  
  1570. Hamzeh, et al.               Informational                     [Page 28]
  1571.  
  1572. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1573.  
  1574.  
  1575.                             the PAC to match the Incoming-Call-Reply
  1576.                             with the Incoming-Call-Request it issued.
  1577.                             This value is included in the GRE header of
  1578.                             transmitted data packets for this session.
  1579.  
  1580.    Result Code              This value indicates the result of the
  1581.                             Incoming-Call-Request attempt.  Current
  1582.                             valid Result Code values are:
  1583.  
  1584.                                   1 (Connect) - The PAC should answer
  1585.                                     the incoming call
  1586.  
  1587.                                   2 (General Error) - The Incoming Call
  1588.                                     should not be established due to the
  1589.                                     reason indicated in Error Code
  1590.  
  1591.                                   3 (Do Not Accept) - The PAC should not
  1592.                                     accept the incoming call.  It should
  1593.                                     hang up or issue a busy indication
  1594.  
  1595.    Error Code               This field is set to 0 unless a "General
  1596.                             Error" condition exists, in which case
  1597.                             Result Code is set to 2 and this field is
  1598.                             set to the value corresponding to the
  1599.                             general error condition as specified in
  1600.                             section 2.2.
  1601.  
  1602.    Packet Recv. Window Size The number of received data packets the PAC
  1603.                             will buffer for this session.
  1604.  
  1605.    Packet Transmit Delay    A measure of the packet processing delay
  1606.                             that might be imposed on data sent to the
  1607.                             PAC from the PNS.  This value is specified
  1608.                             in units of 1/10 seconds.
  1609.  
  1610.    Reserved1                This field MUST be 0.
  1611.  
  1612. 2.11.  Incoming-Call-Connected
  1613.  
  1614.    The Incoming-Call-Connected message is a PPTP control message sent by
  1615.    the PAC to the PNS in response to a received Incoming-Call-Reply.  It
  1616.    provides information to the PNS about particular parameters used for
  1617.    the call.  It also provides information to allow the PNS to regulate
  1618.    the transmission of data to the PAC for this session.
  1619.  
  1620.    This message is the third in the three-way handshake used by PPTP for
  1621.    establishing incoming calls.  It provides a mechanism for providing
  1622.    the PNS with additional information about the call that cannot, in
  1623.  
  1624.  
  1625.  
  1626. Hamzeh, et al.               Informational                     [Page 29]
  1627.  
  1628. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1629.  
  1630.  
  1631.    general, be obtained at the time the Incoming-Call-Request is issued
  1632.    by the PAC.
  1633.  
  1634.        0                   1                   2                   3
  1635.        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
  1636.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1637.       |            Length             |      PPTP Message Type        |
  1638.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1639.       |                         Magic Cookie                          |
  1640.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1641.       |     Control Message Type      |           Reserved0           |
  1642.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1643.       |       Peer's Call ID          |           Reserved1           |
  1644.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1645.       |                         Connect Speed                         |
  1646.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1647.       |   Packet Recv. Window Size    |     Packet Transmit Delay     |
  1648.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1649.       |                         Framing Type                          |
  1650.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1651.  
  1652.    Length                   Total length in octets of this PPTP message,
  1653.                             including the entire PPTP header.
  1654.  
  1655.    PPTP Message Type        1 for Control Message.
  1656.  
  1657.    Magic Cookie             0x1A2B3C4D.
  1658.  
  1659.    Control Message Type     11 for Incoming-Call-Connected.
  1660.  
  1661.    Reserved0                This field MUST be 0.
  1662.  
  1663.    Peer's Call ID           This field is set to the value received in
  1664.                             the Call ID field of the corresponding
  1665.                             Incoming-Call-Reply message.  It is used by
  1666.                             the PNS to match the Incoming-Call-Connected
  1667.                             with the Incoming-Call-Reply it issued.
  1668.  
  1669.    Connect Speed            The actual connection speed used, in
  1670.                             bits/second.
  1671.  
  1672.    Packet Recv. Window Size The number of received data packets the PAC
  1673.                             will buffer for this session.
  1674.  
  1675.    Packet Transmit Delay    A measure of the packet processing delay
  1676.                             that might be imposed on data sent to the
  1677.                             PAC from the PNS.  This value is specified
  1678.                             in units of 1/10 seconds.
  1679.  
  1680.  
  1681.  
  1682. Hamzeh, et al.               Informational                     [Page 30]
  1683.  
  1684. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1685.  
  1686.  
  1687.    Framing Type             A value indicating the type of PPP framing
  1688.                             being used by this incoming call.
  1689.  
  1690.                                   1 - Call uses asynchronous framing
  1691.  
  1692.                                   2 - Call uses synchronous framing
  1693.  
  1694. 2.12.  Call-Clear-Request
  1695.  
  1696.    The Call-Clear-Request is a PPTP control message sent by the PNS to
  1697.    the PAC indicating that a particular call is to be disconnected.  The
  1698.    call being cleared can be either an incoming or outgoing call, in any
  1699.    state.  The PAC responds to this message with a Call-Disconnect-
  1700.    Notify message.
  1701.  
  1702.        0                   1                   2                   3
  1703.        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
  1704.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1705.       |            Length             |      PPTP Message Type        |
  1706.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1707.       |                         Magic Cookie                          |
  1708.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1709.       |     Control Message Type      |           Reserved0           |
  1710.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1711.       |            Call ID            |           Reserved1           |
  1712.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1713.  
  1714.    Length                   Total length in octets of this PPTP message,
  1715.                             including the entire PPTP header.
  1716.  
  1717.    PPTP Message Type        1 for Control Message.
  1718.  
  1719.    Magic Cookie             0x1A2B3C4D.
  1720.  
  1721.    Control Message Type     12 for Call-Clear-Request.
  1722.  
  1723.    Reserved0                This field MUST be 0.
  1724.  
  1725.    Call ID                  The Call ID assigned by the PNS to this
  1726.                             call.  This value is used instead of the
  1727.                             Peer's Call ID because the latter may not be
  1728.                             known to the PNS if the call must be aborted
  1729.                             during call establishment.
  1730.  
  1731.    Reserved1                This field MUST be 0.
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Hamzeh, et al.               Informational                     [Page 31]
  1739.  
  1740. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1741.  
  1742.  
  1743. 2.13.  Call-Disconnect-Notify
  1744.  
  1745.    The Call-Disconnect-Notify message is a PPTP control message sent by
  1746.    the PAC to the PNS.  It is issued whenever a call is disconnected,
  1747.    due to the receipt by the PAC of a Call-Clear-Request or for any
  1748.    other reason.  Its purpose is to inform the PNS of both the
  1749.    disconnection and the reason for it.
  1750.  
  1751.        0                   1                   2                   3
  1752.        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
  1753.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1754.       |            Length             |      PPTP Message Type        |
  1755.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1756.       |                         Magic Cookie                          |
  1757.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1758.       |     Control Message Type      |           Reserved0           |
  1759.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1760.       |            Call ID            |  Result Code  |  Error Code   |
  1761.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1762.       |          Cause Code           |           Reserved1           |
  1763.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1764.       |                                                               |
  1765.       +              Call Statistics (128 octets)                     +
  1766.       |                                                               |
  1767.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1768.  
  1769.    Length                   Total length in octets of this PPTP message,
  1770.                             including the entire PPTP header.
  1771.  
  1772.    PPTP Message Type        1 for Control Message.
  1773.  
  1774.    Magic Cookie             0x1A2B3C4D.
  1775.  
  1776.    Control Message Type     13 for Call-Disconnect-Notify.
  1777.  
  1778.    Reserved0                This field MUST be 0.
  1779.  
  1780.    Call ID                  The value of the Call ID assigned by the PAC
  1781.                             to this call.  This value is used instead of
  1782.                             the Peer's Call ID because the latter may
  1783.                             not be known to the PNS if the call must be
  1784.                             aborted during call establishment.
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794. Hamzeh, et al.               Informational                     [Page 32]
  1795.  
  1796. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1797.  
  1798.  
  1799.    Result Code              This value indicates the reason for the
  1800.                             disconnect. Current valid Result Code values
  1801.                             are:
  1802.  
  1803.                                   1 (Lost Carrier) - Call disconnected
  1804.                                     due to loss of carrier
  1805.  
  1806.                                   2 (General Error) - Call disconnected
  1807.                                     for the reason indicated in Error
  1808.                                     Code
  1809.  
  1810.                                   3 (Admin Shutdown) - Call disconnected
  1811.                                     for administrative reasons
  1812.  
  1813.                                   4 (Request) - Call disconnected due to
  1814.                                     received Call-Clear-Request
  1815.  
  1816.    Error Code               This field is set to 0 unless a "General
  1817.                             Error" condition exists, in which case the
  1818.                             Result Code is set to 2 and this field is
  1819.                             set to the value corresponding to the
  1820.                             general error condition as specified in
  1821.                             section 2.2.
  1822.  
  1823.    Cause Code               This field gives additional disconnect
  1824.                             information.  Its value varies depending on
  1825.                             the type of call being disconnected.  For
  1826.                             ISDN calls it is the Q.931 cause code.
  1827.  
  1828.    Call Statistics          This field is an ASCII string containing
  1829.                             vendor-specific call statistics that can be
  1830.                             logged for diagnostic purposes.  If the
  1831.                             length of the string is less than 128, the
  1832.                             remainder of the field is filled with octets
  1833.                             of value 0.
  1834.  
  1835. 2.14.  WAN-Error-Notify
  1836.  
  1837.    The WAN-Error-Notify message is a PPTP control message sent by the
  1838.    PAC to the PNS to indicate WAN error conditions (conditions that
  1839.    occur on the interface supporting PPP).  The counters in this message
  1840.    are cumulative.  This message should only be sent when an error
  1841.    occurs, and not more than once every 60 seconds.  The counters are
  1842.    reset when a new call is established.
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Hamzeh, et al.               Informational                     [Page 33]
  1851.  
  1852. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1853.  
  1854.  
  1855.        0                   1                   2                   3
  1856.        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
  1857.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1858.       |            Length             |      PPTP Message Type        |
  1859.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1860.       |                         Magic Cookie                          |
  1861.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1862.       |     Control Message type      |           Reserved0           |
  1863.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1864.       |        Peer's Call ID         |           Reserved1           |
  1865.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1866.       |                          CRC Errors                           |
  1867.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1868.       |                        Framing Errors                         |
  1869.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1870.       |                       Hardware Overruns                       |
  1871.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1872.       |                        Buffer Overruns                        |
  1873.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1874.       |                        Time-out Errors                        |
  1875.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1876.       |                       Alignment Errors                        |
  1877.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1878.  
  1879.    Length                   Total length in octets of this PPTP message,
  1880.                             including the entire PPTP header.
  1881.  
  1882.    PPTP Message Type        1 for Control Message.
  1883.  
  1884.    Magic Cookie             0x1A2B3C4D.
  1885.  
  1886.    Control Message Type     14 for WAN-Error-Notify.
  1887.  
  1888.    Reserved0                This field MUST be 0.
  1889.  
  1890.    Peer's Call ID           Th Call ID assigned by the PNS to this call.
  1891.  
  1892.    CRC Errors               Number of PPP frames received with CRC
  1893.                             errors since session was established.
  1894.  
  1895.    Framing Errors           Number of improperly framed PPP packets
  1896.                             received.
  1897.  
  1898.    Hardware Overruns        Number of receive buffer over-runs since
  1899.                             session was established.
  1900.  
  1901.    Buffer Overruns          Number of buffer over-runs detected since
  1902.                             session was established.
  1903.  
  1904.  
  1905.  
  1906. Hamzeh, et al.               Informational                     [Page 34]
  1907.  
  1908. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1909.  
  1910.  
  1911.    Time-out Errors          Number of time-outs since call was
  1912.                             established.
  1913.  
  1914.    Alignment Errors         Number of alignment errors since call was
  1915.                             established.
  1916.  
  1917. 2.15.  Set-Link-Info
  1918.  
  1919.    The Set-Link-Info message is a PPTP control message sent by the PNS
  1920.    to the PAC to set PPP-negotiated options.  Because these options can
  1921.    change at any time during the life of the call, the PAC must be able
  1922.    to update its internal call information dynamically and perform PPP
  1923.    negotiation on an active PPP session.
  1924.  
  1925.        0                   1                   2                   3
  1926.        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
  1927.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1928.       |            Length             |      PPTP Message Type        |
  1929.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1930.       |                         Magic Cookie                          |
  1931.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1932.       |     Control Message type      |           Reserved0           |
  1933.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1934.       |        Peer's Call ID         |           Reserved1           |
  1935.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1936.       |                           Send ACCM                           |
  1937.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1938.       |                         Receive ACCM                          |
  1939.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1940.  
  1941.    Length                   Total length in octets of this PPTP message,
  1942.                             including the entire PPTP header.
  1943.  
  1944.    PPTP Message Type        1 for Control Message.
  1945.  
  1946.    Magic Cookie             0x1A2B3C4D.
  1947.  
  1948.    Control Message Type     15 for Set-Link-Info.
  1949.  
  1950.    Reserved0                This field MUST be 0.
  1951.  
  1952.    Peer's Call ID           The value of the Call ID assigned by the PAC
  1953.                             to this call.
  1954.  
  1955.    Reserved1                This field MUST be 0.
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962. Hamzeh, et al.               Informational                     [Page 35]
  1963.  
  1964. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  1965.  
  1966.  
  1967.    Send ACCM                The send ACCM value the client should use to
  1968.                             process outgoing PPP packets.  The default
  1969.                             value used by the client until this message
  1970.                             is received is 0XFFFFFFFF.  See [7].
  1971.  
  1972.    Receive ACCM             The receive ACCM value the client should use
  1973.                             to process incoming PPP packets. The default
  1974.                             value used by the client until this message
  1975.                             is received is 0XFFFFFFFF.  See [7].
  1976.  
  1977. 2.16.  General Error Codes
  1978.  
  1979.    General error codes pertain to types of errors which are not specific
  1980.    to any particular PPTP request, but rather to protocol or message
  1981.    format errors.  If a PPTP reply indicates in its Result Code that a
  1982.    general error occurred, the General Error value should be examined to
  1983.    determined what the error was.  The currently defined General Error
  1984.    codes and their meanings are:
  1985.  
  1986.       0 (None)          - No general error
  1987.  
  1988.       1 (Not-Connected) - No control connection exists yet for this
  1989.                           PAC-PNS pair
  1990.  
  1991.       2 (Bad-Format)    - Length is wrong or Magic Cookie value is
  1992.                           incorrect
  1993.  
  1994.       3 (Bad-Value)     - One of the field values was out of range or
  1995.                           reserved field was non-zero
  1996.  
  1997.       4 (No-Resource)   - Insufficient resources to handle this command
  1998.                           now
  1999.  
  2000.       5 (Bad-Call ID)    - The Call ID is invalid in this context
  2001.  
  2002.       6 (PAC-Error)     - A generic vendor-specific error occurred in
  2003.                           the PAC
  2004.  
  2005. 3.  Control Connection Protocol Operation
  2006.  
  2007.    This section describes the operation of various PPTP control
  2008.    connection functions and the Control Connection messages which are
  2009.    used to support them.  The protocol operation of the control
  2010.    connection is simplified because TCP is used to provide a reliable
  2011.    transport mechanism.  Ordering and retransmission of messages is not
  2012.    a concern at this level.  The TCP connection itself, however, can
  2013.    close at any time and an appropriate error recovery mechanism must be
  2014.    provided to handle this case.
  2015.  
  2016.  
  2017.  
  2018. Hamzeh, et al.               Informational                     [Page 36]
  2019.  
  2020. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2021.  
  2022.  
  2023.    Some error recovery procedures are common to all states of the
  2024.    control connection.  If an expected reply does not arrive within 60
  2025.    seconds, the control connection is closed, unless otherwise
  2026.    specified.  Appropriate logging should be implemented for easy
  2027.    determination of the problems and the reasons for closing the control
  2028.    connection.
  2029.  
  2030.    Receipt of an invalid or malformed Control Connection message should
  2031.    be logged appropriately, and the control connection should be closed
  2032.    and restarted to ensure recovery into a known state.
  2033.  
  2034. 3.1.  Control Connection States
  2035.  
  2036.    The control connection relies on a standard TCP connection for its
  2037.    service.  The PPTP control connection protocol is not distinguishable
  2038.    between the PNS and PAC, but is distinguishable between the
  2039.    originator and receiver. The originating peer is the one which first
  2040.    attempts the TCP open. Since either PAC or PNS may originate a
  2041.    connection, it is possible for a TCP collision to occur.  See section
  2042.    3.1.3 for a description of this situation.
  2043.  
  2044. 3.1.1.  Control Connection Originator (may be PAC or PNS)
  2045.  
  2046.                 TCP Open Indication
  2047.                 /Send Start Control
  2048.                   Connection Request       +-----------------+
  2049.      +------------------------------------>|  wait_ctl_reply |
  2050.      |                                     +-----------------+
  2051.      |     Collision/See (4.1.3) Close TCP   V  V  V   Receive Start Ctl
  2052.      |       +-------------------------------+  |  |   Connection Reply
  2053.      |       |                                  |  |   Version OK
  2054.      ^       V                                  |  V
  2055. +-----------------+          Receive Start Ctl  | +-----------------+
  2056. |      idle       |          Connection Reply   | |   established   |
  2057. +-----------------+          Version Not OK     | +-----------------+
  2058.      ^                                          |  V   Local Terminate
  2059.      |         Receive Stop Control             |  |   /Send Stop
  2060.      |         Connection Request               |  |    Control Request
  2061.      |         /Send Stop Control Reply         V  V
  2062.      |          Close TCP                  +-----------------+
  2063.      +-------------------------------------| wait_stop_reply |
  2064.                                            +-----------------+
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074. Hamzeh, et al.               Informational                     [Page 37]
  2075.  
  2076. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2077.  
  2078.  
  2079.    idle
  2080.       The control connection originator attempts to open a TCP
  2081.       connection to the peer during idle state. When the TCP connection
  2082.       is open, the originator transmits a send Start-Control-
  2083.       Connection-Request and then enters the wait_ctl_reply state.
  2084.  
  2085.    wait_ctl_reply
  2086.       The originator checks to see if another TCP connection has been
  2087.       requested from the same peer, and if so, handles the collision
  2088.       situation described in section 3.1.3.
  2089.  
  2090.       When a Start-Control-Connection-Reply is received, it is examined
  2091.       for a compatible version. If the version of the reply is lower
  2092.       than the version sent in the request, the older (lower) version
  2093.       should be used provided it is supported.  If the version in the
  2094.       reply is earlier and supported, the originator moves to the
  2095.       established state. If the version is earlier and not supported, a
  2096.       Stop-Control-Connection-Request SHOULD be sent to the peer and the
  2097.       originator moves into the wait_stop_reply state.
  2098.  
  2099.    established
  2100.       An established connection may be terminated by either a local
  2101.       condition or the receipt of a Stop-Control-Connection-Request. In
  2102.       the event of a local termination, the originator MUST send a
  2103.       Stop-Control-Connection-Request and enter the wait_stop_reply
  2104.       state.
  2105.  
  2106.       If the originator receives a Stop-Control-Connection-Request it
  2107.       SHOULD send a Stop-Control-Connection-Reply and close the TCP
  2108.       connection making sure that the final TCP information has been
  2109.       "pushed" properly.
  2110.  
  2111.    wait_stop_reply
  2112.       If a Stop-Control-Connection-Reply is received, the TCP connection
  2113.       SHOULD be closed and the control connection becomes idle.
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130. Hamzeh, et al.               Informational                     [Page 38]
  2131.  
  2132. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2133.  
  2134.  
  2135. 3.1.2.  Control connection Receiver (may be PAC or PNS)
  2136.  
  2137. Receive Start Control Connection Request
  2138. Version Not OK/Send Start Control Connection
  2139. Reply with Error
  2140.   +--------+
  2141.   |        |         Receive Control Connection Request Version OK
  2142.   |        |         /Send Start Control Connection Reply
  2143.   |        |   +----------------------------------------+
  2144.   ^        V   ^                                        V
  2145. +-----------------+             Receive Start Ctl    +-----------------+
  2146. |      Idle       |             Connection Request   |   Established   |
  2147. +-----------------+             /Send Stop Reply     +-----------------+
  2148.         ^      ^                 Close TCP           V  V Local Terminate
  2149.         |      +-------------------------------------+  | /Send Stop
  2150.         |                                               |  Control Conn.
  2151.         |                                               V  Request
  2152.         |                                     +-----------------+
  2153.         +-------------------------------------| Wait-Stop-Reply |
  2154.                  Receive Stop Control         +-----------------+
  2155.                  Connection Reply
  2156.                  /Close TCP
  2157.  
  2158.    idle
  2159.       The control connection receiver waits for a TCP open attempt on
  2160.       port 1723. When notified of an open TCP connection, it should
  2161.       prepare to receive PPTP messages.  When a Start-Control-
  2162.       Connection-Request is received its version field should be
  2163.       examined. If the version is earlier than the receiver's version
  2164.       and the earlier version can be supported by the receiver, the
  2165.       receiver SHOULD send a Start-Control-Connection-Reply. If the
  2166.       version is earlier than the receiver's version and the version
  2167.       cannot be supported, the receiver SHOULD send a Start-Connection-
  2168.       Reply message, close the TCP connection and remain in the idle
  2169.       state.  If the receiver's version is the same as earlier than the
  2170.       peer's, the receiver SHOULD send a Start-Control-Connection-Reply
  2171.       with the receiver's version and enter the established state.
  2172.  
  2173.    established
  2174.       An established connection may be terminated by either a local
  2175.       condition or the reception of a Stop-Control-Connection-Request.
  2176.       In the event of a local termination, the originator MUST send a
  2177.       Stop-Control-Connection-Request and enter the wait_stop_reply
  2178.       state.
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186. Hamzeh, et al.               Informational                     [Page 39]
  2187.  
  2188. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2189.  
  2190.  
  2191.       If the originator receives a Stop-Control-Connection-Request it
  2192.       SHOULD send a Stop-Control-Connection-Reply and close the TCP
  2193.       connection, making sure that the final TCP information has been
  2194.       "pushed" properly.
  2195.  
  2196.    wait_stop_reply
  2197.       If a Stop-Control-Connection-Reply is received, the TCP connection
  2198.       SHOULD be closed and the control connection becomes idle.
  2199.  
  2200. 3.1.3.  Start Control Connection Initiation Request Collision
  2201.  
  2202.    A PAC and PNS must have only one control connection between them. It
  2203.    is possible, however, for a PNS and a PAC to simultaneously attempt
  2204.    to establish a control connection to each other. When a Start-
  2205.    Control-Connection-Request is received on one TCP connection and
  2206.    another Start-Control-Connection-Request has already been sent on
  2207.    another TCP connection to the same peer, a collision has occurred.
  2208.  
  2209.    The "winner" of the initiation race is the peer with the higher IP
  2210.    address (compared as 32 bit unsigned values, network number more
  2211.    significant). For example, if the peers 192.33.45.17 and 192.33.45.89
  2212.    collide, the latter will be declared the winner.  The loser will
  2213.    immediately close the TCP connection it initiated, without sending
  2214.    any further PPTP control messages on it and will respond to the
  2215.    winner's request with a Start-Control-Connection-Reply message. The
  2216.    winner will wait for the Start-Control-Connection-Reply on the
  2217.    connection it initiated and also wait for a TCP termination
  2218.    indication on the connection the loser opened.  The winner MUST NOT
  2219.    send any messages on the connection the loser initiated.
  2220.  
  2221. 3.1.4.  Keep Alives and Timers
  2222.  
  2223.    A control connection SHOULD be closed by closing the underlying TCP
  2224.    connection under the following circumstances:
  2225.  
  2226.    1. If a control connection is not in the established state (i.e.,
  2227.       Start-Control-Connection-Request and Start-Control-Connection-
  2228.       Reply have not been exchanged), a control connection SHOULD be
  2229.       closed after 60 seconds by a peer waiting for a Start-Control-
  2230.       Connection-Request or Start-Control-Connection-Reply message.
  2231.  
  2232.    2. If a peer's control connection is in the established state and has
  2233.       not received a control message for 60 seconds, it SHOULD send a
  2234.       Echo-Request message. If an Echo-Reply is not received 60 seconds
  2235.       after the Echo-Request message transmission, the control
  2236.       connection SHOULD be closed.
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242. Hamzeh, et al.               Informational                     [Page 40]
  2243.  
  2244. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2245.  
  2246.  
  2247. 3.2.  Call States
  2248.  
  2249. 3.2.1.  Timing considerations
  2250.  
  2251.    Because of the real-time nature of telephone signaling, both the PNS
  2252.    and PAC should be implemented with multi-threaded architectures such
  2253.    that messages related to multiple calls are not serialized and
  2254.    blocked. The transit delay between the PAC and PNS should not exceed
  2255.    one second. The call and connection state figures do not specify
  2256.    exceptions caused by timers. The implicit assumption is that since
  2257.    the TCP-based control connection is being verified with keep-alives,
  2258.    there is less need to maintain strict timers for call control
  2259.    messages.
  2260.  
  2261.    Establishing outbound international calls, including the modem
  2262.    training and negotiation sequences, may take in excess of 1 minute so
  2263.    the use of short timers is discouraged.
  2264.  
  2265.    If a state transition does not occur within 1 minute (except for
  2266.    connections in the idle or established states), the integrity of the
  2267.    protocol processing between the peers is suspect and the ENTIRE
  2268.    CONTROL CONNECTION should be closed and restarted. All Call IDs are
  2269.    logically released whenever a control connection is started. This
  2270.    presumably also helps in preventing toll calls from being "lost" and
  2271.    never cleared.
  2272.  
  2273. 3.2.2.  Call ID Values
  2274.  
  2275.    Each peer assigns a Call ID value to each user session it requests or
  2276.    accepts. This Call ID value MUST be unique for the tunnel between the
  2277.    PNS and PAC to which it belongs. Tunnels to other peers can use the
  2278.    same Call ID number so the receiver of a packet on a tunnel needs to
  2279.    associate a user session with a particular tunnel and Call ID.  It is
  2280.    suggested that the number of potential Call ID values for each tunnel
  2281.    be at least twice as large as the maximum number of calls expected on
  2282.    a given tunnel.
  2283.  
  2284.    A session is defined by the triple (PAC, PNS, Call ID).
  2285.  
  2286. 3.2.3.  Incoming Calls
  2287.  
  2288.    An Incoming-Call-Request message is generated by the PAC when an
  2289.    associated telephone line rings. The PAC selects a Call ID and serial
  2290.    number and indicates the call bearer type.  Modems should always
  2291.    indicate analog call type.  ISDN calls should indicate digital when
  2292.    unrestricted digital service or rate adaption is used and analog if
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298. Hamzeh, et al.               Informational                     [Page 41]
  2299.  
  2300. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2301.  
  2302.  
  2303.    digital modems are involved. Dialing number, dialed number, and
  2304.    subaddress may be included in the message if they are available from
  2305.    the telephone network.
  2306.  
  2307.    Once the PAC sends the Incoming-Call-Request, it waits for a response
  2308.    from the PNS but does not answer the call from the telephone network.
  2309.    The PNS may choose not to accept the call if:
  2310.  
  2311.       -  No resources are available to handle more sessions
  2312.  
  2313.       -  The dialed, dialing, or subaddress fields are not indicative of
  2314.          an authorized user
  2315.  
  2316.       -  The bearer service is not authorized or supported
  2317.  
  2318.    If the PNS chooses to accept the call, it responds with an Incoming-
  2319.    Call-Reply which also indicates window sizes (see section 4.2). When
  2320.    the PAC receives the Outgoing-Call-Reply, it attempts to connect the
  2321.    call, assuming the calling party has not hung up. A final call
  2322.    connected message from the PAC to the PNS indicates that the call
  2323.    states for both the PAC and the PNS should enter the established
  2324.    state.
  2325.  
  2326.    When the dialed-in client hangs up, the call is cleared normally and
  2327.    the PAC sends a Call-Disconnect-Notify message. If the PNS wishes to
  2328.    clear a call, it sends a Call-Clear-Request message and then waits
  2329.    for a Call-Disconnect-Notify.
  2330.  
  2331. 3.2.3.1.  PAC Incoming Call States
  2332.  
  2333.     Ring/Send Incoming Call Request          +-----------------+
  2334.   +----------------------------------------->|    wait_reply   |
  2335.   |                                          +-----------------+
  2336.   |           Receive Incoming Call Reply    V  V  V
  2337.   |           Not Accepting                  |  |  |   Receive Incoming
  2338.   |         +--------------------------------+  |  |   Call Reply Accept-
  2339.   |         |    +------------------------------+  |   ing/Answer call;
  2340.   |         |    |     Abort/Send Call             |   Send Call
  2341.   ^         V    V     Disconnect Notify           V   Connected
  2342. +-----------------+                              +-----------------+
  2343. |      idle       |<-----------------------------|   established   |
  2344. +-----------------+  Receive Clear Call Request  +-----------------+
  2345.                      or telco call dropped
  2346.                      or local disconnect
  2347.                      /Send Call Disconnect Notify
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354. Hamzeh, et al.               Informational                     [Page 42]
  2355.  
  2356. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2357.  
  2358.  
  2359. The states associated with the PAC for incoming calls are:
  2360.  
  2361.    idle
  2362.       The PAC detects an incoming call on one of its telco interfaces.
  2363.       Typically this means an analog line is ringing or an ISDN TE has
  2364.       detected an incoming Q.931 SETUP message. The PAC sends an
  2365.       Incoming-Call-Request message and moves to the wait_reply state.
  2366.  
  2367.    wait_reply
  2368.       The PAC receives an Incoming-Call-Reply message indicating non-
  2369.       willingness to accept the call (general error or don't accept) and
  2370.       moves back into the idle state. If the reply message indicates
  2371.       that the call is accepted, the PAC sends an Incoming-Call-
  2372.       Connected message and enters the established state.
  2373.  
  2374.    established
  2375.       Data is exchanged over the tunnel.  The call may be cleared
  2376.       following:
  2377.  
  2378.          An event on the telco connection. The PAC sends a
  2379.          Call-Disconnect-Notify message
  2380.  
  2381.          Receipt of a Call-Clear-Request.  The PAC sends a
  2382.          Call-Disconnect-Notify message
  2383.  
  2384.          A local reason. The PAC sends a Call-Disconnect-Notify message.
  2385.  
  2386. 3.2.3.2.  PNS Incoming Call States
  2387.  
  2388.   Receive Incoming Call Request
  2389.   /Send Incoming Call Reply                  +-----------------+
  2390.    Not Accepting if Error                    |   Wait-Connect  |
  2391.   +-----+                                    +-----------------+
  2392.   |     |     Receive Incoming Call Req.     ^  V  V
  2393.   |     |     /Send Incoming Call Reply OK   |  |  |   Receive Incoming
  2394.   |     |   +--------------------------------+  |  |   Call Connect
  2395.   ^     V   ^    V------------------------------+  V
  2396. +-----------------+  Receive Call Disconnect     +-----------------+
  2397. |      Idle       |  Notify                   +- |   Established   |
  2398. +-----------------+                           |  +-----------------+
  2399.         ^        ^                            |   V   Local Terminate
  2400.         |        +----------------------------+   |   /Send Call Clear
  2401.         |            Receive Call Disconnect      |    Request
  2402.         |            Notify                       V
  2403.         |                                      +-----------------+
  2404.         +--------------------------------------| Wait-Disconnect |
  2405.                      Receive Call Disconnect   +-----------------+
  2406.                      Notify
  2407.  
  2408.  
  2409.  
  2410. Hamzeh, et al.               Informational                     [Page 43]
  2411.  
  2412. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2413.  
  2414.  
  2415. The states associated with the PNS for incoming calls are:
  2416.  
  2417.    idle
  2418.       An Incoming-Call-Request message is received. If the request is
  2419.       not acceptable, an Incoming-Call-Reply is sent back to the PAC and
  2420.       the PNS remains in the idle state.  If the Incoming-Call-Request
  2421.       message is acceptable, an Incoming-Call-Reply is sent indicating
  2422.       accept in the result code. The session moves to the wait_connect
  2423.       state.
  2424.  
  2425.    wait_connect
  2426.       If the session is connected on the PAC, the PAC sends an incoming
  2427.       call connect message to the PNS which then moves into established
  2428.       state. The PAC may send a Call-Disconnect-Notify to indicate that
  2429.       the incoming caller could not be connected.  This could happen,
  2430.       for example, if a telephone user accidently places a standard
  2431.       voice call to a PAC resulting in a handshake failure on the called
  2432.       modem.
  2433.  
  2434.    established
  2435.       The session is terminated either by receipt of a Call-Disconnect-
  2436.       Notify message from the PAC or by sending a Call-Clear-Request.
  2437.       Once a Call-Clear-Request has been sent, the session enters the
  2438.       wait_disconnect state.
  2439.  
  2440.    wait_disconnect
  2441.       Once a Call-Disconnect-Notify is received the session moves back
  2442.       to the idle state.
  2443.  
  2444. 3.2.4.  Outgoing Calls
  2445.  
  2446.    Outgoing messages are initiated by a PNS and instruct a PAC to place
  2447.    a call on a telco interface. There are only two messages for outgoing
  2448.    calls: Outgoing-Call-Request and Outgoing-Call-Reply. The PNS sends
  2449.    an Outgoing-Call-Request specifying the dialed party phone number and
  2450.    subaddress as well as speed and window parameters. The PAC MUST
  2451.    respond to the Outgoing-Call-Request message with an Outgoing-Call-
  2452.    Reply message once the PAC determines that:
  2453.  
  2454.       The call has been successfully connected
  2455.  
  2456.       A call failure has occurred for reasons such as: no interfaces are
  2457.       available for dial-out, the called party is busy or does not
  2458.       answer, or no dial tone is detected on the interface chosen for
  2459.       dialing
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466. Hamzeh, et al.               Informational                     [Page 44]
  2467.  
  2468. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2469.  
  2470.  
  2471. 3.2.4.1.  PAC Outgoing Call States
  2472.  
  2473. Receive Outgoing Call Request in Error
  2474. /Send Outgoing Call Reply with Error
  2475.   |--------+
  2476.   |        |         Receive Outgoing Call Request No Error
  2477.   |        |         /Off Hook; Dial
  2478.   |        |   +-----------------------------------------
  2479.   ^        V   ^                                        V
  2480. +-----------------+           Incomplete Call        +-----------------+
  2481. |      idle       |           /Send Outgoing Call    |   wait_cs_ans   |
  2482. +-----------------+            Reply with Error      +-----------------+
  2483.         ^      ^           or Recv. Call Clear Req.  V  V Telco Answer
  2484.         |      |              /Send Disconnect Notify|  | /Send Outgoing
  2485.         |      +-------------------------------------+  |  Call Reply.
  2486.         |                                               V
  2487.         |                                     +-----------------+
  2488.         +-------------------------------------|   established   |
  2489.                  Receive Call Clear Request   +-----------------+
  2490.                  or local terminate
  2491.                  or telco disconnect
  2492.                  /Hangup call and send
  2493.                  Call Disconnect Notify
  2494.  
  2495.    The states associated with the PAC for outgoing calls are:
  2496.  
  2497.    idle
  2498.       Received Outgoing-Call-Request. If this is received in error,
  2499.       respond with an Outgoing-Call-Reply with error condition set.
  2500.       Otherwise, allocate physical channel to dial on. Place the
  2501.       outbound call, wait for a connection, and move to the wait_cs_ans
  2502.       state.
  2503.  
  2504.    wait_cs_ans
  2505.       If the call is incomplete, send an Outgoing-Call-Reply with a
  2506.       non-zero Error Code. If a timer expires on an outbound call, send
  2507.       back an Outgoing-Call-Reply with a non-zero Error Code. If a
  2508.       circuit switched connection is established, send an Outgoing-
  2509.       Call-Reply indicating success.
  2510.  
  2511.    established
  2512.       If a Call-Clear-Request is received, the telco call SHOULD be
  2513.       released via appropriate mechanisms and a Call-Disconnect-Notify
  2514.       message SHOULD BE sent to the PNS. If the call is disconnected by
  2515.       the client or by the telco interface, a Call-Disconnect-Notify
  2516.       message SHOULD be sent to the PNS.
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522. Hamzeh, et al.               Informational                     [Page 45]
  2523.  
  2524. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2525.  
  2526.  
  2527. 3.2.4.2.  PNS Outgoing Call States
  2528.  
  2529.                 Open Indication                              Abort/Send
  2530.                 /Send Outgoing Call                          Call Clear
  2531.                  Request                  +-----------------+Request
  2532.         +-------------------------------->|    Wait-Reply   |----------+
  2533.         |                                 +-----------------+          |
  2534.         |     Receive Outgoing Call Reply   V     V   Receive Outgoing |
  2535.         |     with Error                    |     |   Call Reply       |
  2536.         |   +-------------------------------+     |   No Error         |
  2537.         ^   V                                     V                    |
  2538. +-----------------+                              +-----------------+   |
  2539. |      Idle       |<-----------------------------|   Established   |   |
  2540. +-----------------+    Receive Call Disconnect   +-----------------+   |
  2541.         ^              Notify                     V   Local Terminate  |
  2542.         |                                         |   /Send Call Clear |
  2543.         |                                         |    Request         |
  2544.         |     Receive Call Disconnect             V                    |
  2545.         |     Notify                      +-----------------+          |
  2546.         +---------------------------------| Wait-Disconnect |<---------+
  2547.                                           +-----------------+
  2548.  
  2549. The states associated with the PNS for outgoing calls are:
  2550.  
  2551.    idle
  2552.       An Outgoing-Call-Request message is sent to the PAC and the
  2553.       session moves into the wait_reply state.
  2554.  
  2555.    wait_reply
  2556.       An Outgoing-Call-Reply is received which indicates an error. The
  2557.       session returns to idle state. No telco call is active. If the
  2558.       Outgoing-Call-Reply does not indicate an error, the telco call is
  2559.       connected and the session moves to the established state.
  2560.  
  2561.    established
  2562.       If a Call-Disconnect-Notify is received, the telco call has been
  2563.       terminated for the reason indicated in the Result and Cause Codes.
  2564.       The session moves back to the idle state. If the PNS chooses to
  2565.       terminate the session, it sends a Call-Clear-Request to the PAC
  2566.       and then enters the wait_disconnect state.
  2567.  
  2568.    wait_disconnect
  2569.       A session disconnection is waiting to be confirmed by the PAC.
  2570.       Once the PNS receives the Call-Disconnect-Notify message, the
  2571.       session enters idle state.
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. Hamzeh, et al.               Informational                     [Page 46]
  2579.  
  2580. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2581.  
  2582.  
  2583. 4.  Tunnel Protocol Operation
  2584.  
  2585.    The user data carried by the PPTP protocol are PPP data packets.  PPP
  2586.    packets are carried between the PAC and PNS, encapsulated in GRE
  2587.    packets which in turn are carried over IP.  The encapsulated PPP
  2588.    packets are essentially PPP data packets less any media specific
  2589.    framing elements.  No HDLC flags, bit insertion, control characters,
  2590.    or control character escapes are included. No CRCs are sent through
  2591.    the tunnel. The IP packets transmitted over the tunnels between a PAC
  2592.    and PNS has the following general structure:
  2593.  
  2594.       +--------------------------------+
  2595.       |          Media Header          |
  2596.       +--------------------------------+
  2597.       |           IP Header            |
  2598.       +--------------------------------+
  2599.       |           GRE Header           |
  2600.       +--------------------------------+
  2601.       |           PPP Packet           |
  2602.       +--------------------------------+
  2603.  
  2604. 4.1.  Enhanced GRE header
  2605.  
  2606.    The GRE header used in PPTP is enhanced slightly from that specified
  2607.    in the current GRE protocol specification [1,2].  The main difference
  2608.    involves the definition of a new Acknowledgment Number field, used to
  2609.    determine if a particular GRE packet or set of packets has arrived at
  2610.    the remote end of the tunnel.  This Acknowledgment capability is not
  2611.    used in conjunction with any retransmission of user data packets.  It
  2612.    is used instead to determine the rate at which user data packets are
  2613.    to be transmitted over the tunnel for a given user session.  The
  2614.    format of the enhanced GRE header is as follows:
  2615.  
  2616.     0                   1                   2                   3
  2617.     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
  2618.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2619.    |C|R|K|S|s|Recur|A| Flags | Ver |         Protocol Type         |
  2620.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2621.    |    Key (HW) Payload Length    |       Key (LW) Call ID        |
  2622.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2623.    |                  Sequence Number (Optional)                   |
  2624.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2625.    |               Acknowledgment Number (Optional)                |
  2626.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634. Hamzeh, et al.               Informational                     [Page 47]
  2635.  
  2636. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2637.  
  2638.  
  2639.    C
  2640.       (Bit 0) Checksum Present.  Set to zero (0).
  2641.  
  2642.    R
  2643.       (Bit 1) Routing Present.  Set to zero (0).
  2644.  
  2645.    K
  2646.       (Bit 2) Key Present.  Set to one (1).
  2647.    S
  2648.       (Bit 3) Sequence Number Present.  Set to one (1) if a payload
  2649.       (data) packet is present.  Set to zero (0) if payload is not
  2650.       present (GRE packet is an Acknowledgment only).
  2651.  
  2652.    s
  2653.       (Bit 4) Strict source route present.  Set to zero (0).
  2654.  
  2655.    Recur
  2656.       (Bits 5-7) Recursion control.  Set to zero (0).
  2657.  
  2658.    A
  2659.       (Bit 8) Acknowledgment sequence number present.  Set to one (1) if
  2660.       packet contains Acknowledgment Number to be used for acknowledging
  2661.       previously transmitted data.
  2662.  
  2663.    Flags
  2664.       (Bits 9-12) Must be set to zero (0).
  2665.  
  2666.    Ver
  2667.       (Bits 13-15) Must contain 1 (enhanced GRE).
  2668.  
  2669.    Protocol Type
  2670.       Set to hex 880B [8].
  2671.  
  2672.    Key
  2673.       Use of the Key field is up to the implementation.  PPTP uses it as
  2674.       follows:
  2675.          Payload Length
  2676.             (High 2 octets of Key) Size of the payload, not including
  2677.             the GRE header
  2678.  
  2679.          Call ID
  2680.             (Low 2 octets) Contains the Peer's Call ID for the session
  2681.             to which this packet belongs.
  2682.  
  2683.          Sequence Number
  2684.             Contains the sequence number of the payload.  Present if S
  2685.             bit (Bit 3) is one (1).
  2686.  
  2687.  
  2688.  
  2689.  
  2690. Hamzeh, et al.               Informational                     [Page 48]
  2691.  
  2692. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2693.  
  2694.  
  2695.          Acknowledgment Number
  2696.             Contains the sequence number of the highest numbered GRE
  2697.             packet received by the sending peer for this user session.
  2698.             Present if A bit (Bit 8) is one (1).
  2699.  
  2700.          The payload section contains a PPP data packet without any
  2701.          media specific framing elements.
  2702.  
  2703.          The sequence numbers involved are per packet sequence numbers.
  2704.          The sequence number for each user session is set to zero at
  2705.          session startup.  Each packet sent for a given user session
  2706.          which contains a payload (and has the S bit (Bit 3) set to one)
  2707.          is assigned the next consecutive sequence number for that
  2708.          session.
  2709.  
  2710.          This protocol allows acknowledgments to be carried with the
  2711.          data and makes the overall protocol more efficient, which in
  2712.          turn requires less buffering of packets.
  2713.  
  2714. 4.2.  Sliding Window Protocol
  2715.  
  2716.    The sliding window protocol used on the PPTP data path is used for
  2717.    flow control by each side of the data exchange.  The enhanced GRE
  2718.    protocol allows packet acknowledgments to be piggybacked on data
  2719.    packets.  Acknowledgments can also be sent separately from data
  2720.    packets.  Again, the main purpose of the sliding window protocol is
  2721.    for flow control--retransmissions are not performed by the tunnel
  2722.    peers.
  2723.  
  2724. 4.2.1.  Initial Window Size
  2725.  
  2726.    Although each side has indicated the maximum size of its receive
  2727.    window, it is recommended that a conservative approach be taken when
  2728.    beginning to transmit data.  The initial window size on the
  2729.    transmitter is set to half the maximum size the receiver requested,
  2730.    with a minimum size of one packet.  The transmitter stops sending
  2731.    packets when the number of packets awaiting acknowledgment is equal
  2732.    to the current window size.  As the receiver successfully digests
  2733.    each window, the window size on the transmitter is bumped up by one
  2734.    packet until the maximum is reached.  This method prevents a system
  2735.    from flooding an already congested network because no history has
  2736.    been established.
  2737.  
  2738. 4.2.2.  Closing the Window
  2739.  
  2740.    When a time-out does occur on a packet, the sender adjusts the size
  2741.    of the transmit window down to one half its value when it failed.
  2742.    Fractions are rounded up, and the minimum window size is one.
  2743.  
  2744.  
  2745.  
  2746. Hamzeh, et al.               Informational                     [Page 49]
  2747.  
  2748. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2749.  
  2750.  
  2751. 4.2.3.  Opening the Window
  2752.  
  2753.    With every successful transmission of a window's worth of packets
  2754.    without a time-out, the transmit window size is increased by one
  2755.    packet until it reaches the maximum window size that was sent by the
  2756.    other side when the call was connected.  As stated earlier, no
  2757.    retransmission is done on a time-out. After a time-out, the
  2758.    transmission resumes with the window starting at one half the size of
  2759.    the transmit window when the time-out occurred and adjusting upward
  2760.    by one each time the transmit window is filled with packets that are
  2761.    all acknowledged without time-outs.
  2762.  
  2763. 4.2.4.  Window Overflow
  2764.  
  2765.    When a receiver's window overflows with too many incoming packets,
  2766.    excess packets are thrown away.  This situation should not arise if
  2767.    the sliding window procedures are being properly followed by the
  2768.    transmitter and receiver. It is assumed that, on the transmit side,
  2769.    packets are buffered for transmission and are no longer accepted from
  2770.    the packet source when the transmit buffer fills.
  2771.  
  2772. 4.2.5.  Multi-packet Acknowledgment
  2773.  
  2774.    One feature of the PPTP sliding window protocol is that it allows the
  2775.    acknowledgment of multiple packets with a single acknowledgment. All
  2776.    outstanding packets with a sequence number lower or equal to the
  2777.    acknowledgment number are considered acknowledged. Time-out
  2778.    calculations are performed using the time the packet corresponding to
  2779.    the highest sequence number being acknowledged was transmitted.
  2780.  
  2781.    Adaptive time-out calculations are only performed when an
  2782.    Acknowledgment is received.  When multi-packet acknowledgments are
  2783.    used, the overhead of the adaptive time-out algorithm is reduced. The
  2784.    PAC is not required to transmit multi-packet acknowledgments; it can
  2785.    instead acknowledge each packet individually as it is delivered to
  2786.    the PPP client.
  2787.  
  2788. 4.3.  Out-of-sequence Packets
  2789.  
  2790.    Occasionally packets lose their sequencing across a complicated
  2791.    internetwork.  Say, for example that a PNS sends packets 0 to 5 to a
  2792.    PAC.  Because of rerouting in the internetwork, packet 4 arrives at
  2793.    the PAC before packet 3. The PAC acknowledges packet 4, and may
  2794.    assume packet 3 is lost. This acknowledgment grants window credit
  2795.    beyond packet 4.
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802. Hamzeh, et al.               Informational                     [Page 50]
  2803.  
  2804. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2805.  
  2806.  
  2807.    When the PAC does receive packet 3, it MUST not attempt to transmit
  2808.    it to the corresponding PPP client.  To do so could cause problems,
  2809.    as proper PPP protocol operation is premised upon receiving packets
  2810.    in sequence.  PPP does properly deal with the loss of packets, but
  2811.    not with reordering so out of sequence packets between the PNS and
  2812.    PAC MUST be silently discarded, or they may be reordered by the
  2813.    receiver.  When packet 5 comes in, it is acknowledged by the PAC
  2814.    since it has a higher sequence number than 4, which was the last
  2815.    highest packet acknowledged by the PAC.  Packets with duplicate
  2816.    sequence numbers should never occur since the PAC and PNS never
  2817.    retransmit GRE packets.  A robust implementation will silently
  2818.    discard duplicate GRE packets, should it receive any.
  2819.  
  2820. 4.4.  Acknowledgment Time-Outs
  2821.  
  2822.    PPTP uses sliding windows and time-outs to provide both user session
  2823.    flow-control across the internetwork and to perform efficient data
  2824.    buffering to keep the PAC-PNS data channels full without causing
  2825.    receive buffer overflow.  PPTP requires that a time-out be used to
  2826.    recover from dropped data or acknowledgment packets.  The exact
  2827.    implementation of the time-out is vendor-specific.  It is suggested
  2828.    that an adaptive time-out be implemented with backoff for congestion
  2829.    control.  The time-out mechanism proposed here has the following
  2830.    properties:
  2831.  
  2832.       Independent time-outs for each session. A device (PAC or PNS) will
  2833.       have to maintain and calculate time-outs for every active session.
  2834.  
  2835.       An administrator-adjustable maximum time-out, MaxTimeOut, unique
  2836.       to each device.
  2837.  
  2838.       An adaptive time-out mechanism that compensates for changing
  2839.       throughput.  To reduce packet processing overhead, vendors may
  2840.       choose not to recompute the adaptive time-out for every received
  2841.       acknowledgment.  The result of this overhead reduction is that the
  2842.       time-out will not respond as quickly to rapid network changes.
  2843.  
  2844.       Timer backoff on time-out to reduce congestion. The backed-off
  2845.       timer value is limited by the configurable maximum time-out value.
  2846.       Timer backoff is done every time an acknowledgment time-out
  2847.       occurs.
  2848.  
  2849.    In general, this mechanism has the desirable behavior of quickly
  2850.    backing off upon a time-out and of slowly decreasing the time-out
  2851.    value as packets are delivered without time-outs.
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858. Hamzeh, et al.               Informational                     [Page 51]
  2859.  
  2860. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2861.  
  2862.  
  2863.    Some definitions:
  2864.  
  2865.       Packet Processing Delay (PPD) is the amount of time required for
  2866.       each side to process the maximum amount of data buffered in their
  2867.       receive packet sliding window. The PPD is the value exchanged
  2868.       between the PAC and PNS when a call is established. For the PNS,
  2869.       this number should be small.  For a PAC making modem connections,
  2870.       this number could be significant.
  2871.  
  2872.       Sample is the actual amount of time incurred receiving an
  2873.       acknowledgment for a packet. The Sample is measured, not
  2874.       calculated.
  2875.  
  2876.       Round-Trip Time (RTT) is the estimated round-trip time for an
  2877.       Acknowledgment to be received for a given transmitted packet. When
  2878.       the network link is a local network, this delay will be minimal
  2879.       (if not zero). When the network link is the Internet, this delay
  2880.       could be substantial and vary widely. RTT is adaptive: it will
  2881.       adjust to include the PPD and whatever shifting network delays
  2882.       contribute to the time between a packet being transmitted and
  2883.       receiving its acknowledgment.
  2884.  
  2885.       Adaptive Time-Out (ATO) is the time that must elapse before an
  2886.       acknowledgment is considered lost.  After a time-out, the sliding
  2887.       window is partially closed and the ATO is backed off.
  2888.  
  2889.    The Packet Processing Delay (PPD) parameter is a 16-bit word
  2890.    exchanged during the Call Control phase that represents tenths of a
  2891.    second (64 means 6.4 seconds). The protocol only specifies that the
  2892.    parameter is exchanged, it does not specify how it is calculated. The
  2893.    way values for PPD are calculated is implementation-dependent and
  2894.    need not be variable (static time-outs are allowed). The PPD must be
  2895.    exchanged in the call connect sequences, even if it remains constant
  2896.    in an implementation. One possible way to calculate the PPD is:
  2897.  
  2898.    PPD' = ((PPP_MAX_DATA_MTU - Header) * WindowSize * 8) / ConnectRate
  2899.    PPD = PPD' + PACFudge
  2900.  
  2901.    Header is the total size of the IP and GRE headers, which is 36. The
  2902.    MTU is the overall MTU for the internetwork link between the PAC and
  2903.    PNS.  WindowSize represents the number of packets in the sliding
  2904.    window, and is implementation-dependent. The latency of the
  2905.    internetwork could be used to pick a window size sufficient to keep
  2906.    the current session's pipe full. The constant 8 converts octets to
  2907.    bits (assuming ConnectRate is in bits per second).  If ConnectRate is
  2908.    in bytes per second, omit the 8.  PACFudge is not required but can be
  2909.    used to take overall processing overhead of the PAC into account.
  2910.  
  2911.  
  2912.  
  2913.  
  2914. Hamzeh, et al.               Informational                     [Page 52]
  2915.  
  2916. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2917.  
  2918.  
  2919.    The value of PPD is used to seed the adaptive algorithm with the
  2920.    initial RTT[n-1] value.
  2921.  
  2922. 4.4.1.  Calculating Adaptive Acknowledgment Time-Out
  2923.  
  2924.    We still must decide how much time to allow for acknowledgments to
  2925.    return. If the time-out is set too high, we may wait an unnecessarily
  2926.    long time for dropped packets. If the time-out is too short, we may
  2927.    time out just before the acknowledgment arrives. The acknowledgment
  2928.    time-out should also be reasonable and responsive to changing network
  2929.    conditions.
  2930.  
  2931.    The suggested adaptive algorithm detailed below is based on the TCP
  2932.    1989 implementation and is explained in [11].  'n' means this
  2933.    iteration of the calculation, and 'n-1' refers to values from the
  2934.    last calculation.
  2935.  
  2936.       DIFF[n] = SAMPLE[n] - RTT[n-1]
  2937.       DEV[n] = DEV[n-1] + (beta * (|DIFF[n]| - DEV[n-1]))
  2938.       RTT[n] = RTT[n-1] + (alpha * DIFF[n])
  2939.       ATO[n] = MAX (MinTimeOut, MIN (RTT[n] +
  2940.                (chi * DEV[n]), MaxTimeOut))
  2941.  
  2942.       DIFF represents the error between the last estimated round-trip
  2943.       time and the measured time. DIFF is calculated on each iteration.
  2944.  
  2945.       DEV is the estimated mean deviation. This approximates the
  2946.       standard deviation.  DEV is calculated on each iteration and
  2947.       stored for use in the next iteration. Initially, it is set to 0.
  2948.  
  2949.       RTT is the estimated round-trip time of an average packet. RTT is
  2950.       ycalculated on each iteration and stored for use in the next
  2951.       iteration.  Initially, it is set to PPD.
  2952.  
  2953.       ATO is the adaptive time-out for the next transmitted packet. ATO
  2954.       is calculated on each iteration.  Its value is limited, by the MIN
  2955.       function, to be a maximum of the configured MaxTimeOut value.
  2956.  
  2957.       Alpha is the gain for the average and is typically 1/8 (0.125).
  2958.  
  2959.       Beta is the gain for the deviation and is typically 1/4 (0.250).
  2960.  
  2961.       Chi is the gain for the time-out and is typically set to 4.
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970. Hamzeh, et al.               Informational                     [Page 53]
  2971.  
  2972. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  2973.  
  2974.  
  2975.    To eliminate division operations for fractional gain elements, the
  2976.    entire set of equations can be scaled. With the suggested gain
  2977.    constants, they should be scaled by 8 to eliminate all division.  To
  2978.    simplify calculations, all gain values are kept to powers of two so
  2979.    that shift operations can be used in place of multiplication or
  2980.    division.
  2981.  
  2982. 4.4.2.  Congestion Control: Adjusting for Time-Out
  2983.  
  2984.    This section describes how the calculation of ATO is modified in the
  2985.    case where a time-out does occur.  When a time-out occurs, the time-
  2986.    out value should be adjusted rapidly upward.  Although the GRE
  2987.    packets are not retransmitted when a time-out occurs, the time-out
  2988.    should be adjusted up toward a maximum limit.  To compensate for
  2989.    shifting internetwork time delays, a strategy must be employed to
  2990.    increase the time-out when it expires (notice that in addition to
  2991.    increasing the time-out, we are also shrinking the size of the window
  2992.    as described in the next section).  For an interval in which a time-
  2993.    out occurs, the new
  2994.    ATO is calculated as:
  2995.  
  2996.       RTT[n] = delta * RTT[n-1]
  2997.       DEV[n] = DEV[n-1]
  2998.       ATO[n] = MAX (MinTimeOut, MIN (RTT[n] +
  2999.                (chi * DEV[n]), MaxTimeOut))
  3000.  
  3001.    In this calculation of ATO, only the two values that both contribute
  3002.    to ATO and are stored for the next iteration are calculated.  RTT is
  3003.    scaled by delta, and DEV is unmodified.  DIFF is not carried forward
  3004.    and is not used in this scenario.  A value of 2 for Delta, the time-
  3005.    out gain factor for RTT, is suggested.
  3006.  
  3007. 5.  Security Considerations
  3008.  
  3009.    The security of user data passed over the tunneled PPP connection is
  3010.    addressed by PPP, as is authentication of the PPP peers.
  3011.  
  3012.    Because the PPTP control channel messages are neither authenticated
  3013.    nor integrity protected, it might be possible for an attacker to
  3014.    hijack the underlying TCP connection.  It is also possible to
  3015.    manufacture false control channel messages and alter genuine messages
  3016.    in transit without detection.
  3017.  
  3018.    The GRE packets forming the tunnel itself are not cryptographically
  3019.    protected.  Because the PPP negotiations are carried out over the
  3020.    tunnel, it may be possible for an attacker to eavesdrop on and modify
  3021.    those negotiations.
  3022.  
  3023.  
  3024.  
  3025.  
  3026. Hamzeh, et al.               Informational                     [Page 54]
  3027.  
  3028. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  3029.  
  3030.  
  3031.    Unless the PPP payload data is cryptographically protected, it can be
  3032.    captured and read or modified.
  3033.  
  3034. 6.  Authors' Addresses
  3035.  
  3036.    Kory Hamzeh
  3037.    Ascend Communications
  3038.    1275 Harbor Bay Parkway
  3039.    Alameda, CA 94502
  3040.  
  3041.    EMail: kory@ascend.com
  3042.  
  3043.  
  3044.    Gurdeep Singh Pall
  3045.    Microsoft Corporation
  3046.    Redmond, WA
  3047.  
  3048.    EMail: gurdeep@microsoft.com
  3049.  
  3050.  
  3051.    William Verthein
  3052.    U.S. Robotics/3Com
  3053.  
  3054.  
  3055.    Jeff Taarud
  3056.    Copper Mountain Networks
  3057.  
  3058.  
  3059.    W. Andrew Little
  3060.    ECI Telematics
  3061.  
  3062.  
  3063.    Glen Zorn
  3064.    Microsoft Corporation
  3065.    Redmond, WA
  3066.  
  3067.    EMail: glennz@microsoft.com
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.  
  3081.  
  3082. Hamzeh, et al.               Informational                     [Page 55]
  3083.  
  3084. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  3085.  
  3086.  
  3087. 7.  References
  3088.  
  3089.    [1]  Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing
  3090.         Encapsulation (GRE)", RFC 1701, October 1994.
  3091.  
  3092.    [2]  Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing
  3093.         Encapsulation (GRE) over IPv4 Networks", RFC 1702, October 1994.
  3094.  
  3095.    [3]  Lloyd, B. and W. Simpson, "PPP Authentication Protocols", RFC
  3096.         1334, October 1992.
  3097.  
  3098.    [4]  Postel, J., "Transmission Control Protocol", STD 7, RFC 793,
  3099.         September 1981.
  3100.  
  3101.    [5]  Postel, J., "User Data Protocol", STD 6, RFC 768, August 1980.
  3102.  
  3103.    [6]  Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
  3104.         October 1994.  See also: http://www.iana.org/numbers.html
  3105.  
  3106.    [7]  Simpson, W., editor, "The Point-to-Point Protocol (PPP)", STD
  3107.         51, RFC 1661, July 1994.
  3108.  
  3109.    [8]  Ethertype for PPP, Reserved with Xerox Corporation.
  3110.  
  3111.    [9]  Simpson, W., "PPP Challenge Handshake Authentication Protocol
  3112.         (CHAP)", RFC 1994, August 1996.
  3113.  
  3114.    [10] Blunk, L. and J Vollbrecht, "PPP Extensible Authentication
  3115.         Protocol (EAP)", RFC 2284, March 1998.
  3116.  
  3117.    [11] Stevens, R., "TCP/IP Illustrated, Volume 1", p. 300, Addison-
  3118.         Wesley, 1994.
  3119.  
  3120.    [12] Bradner, S., "Key words for use in RFCs to Indicate Requirement
  3121.         Levels", BCP 14, RFC 2119, March 1997.
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138. Hamzeh, et al.               Informational                     [Page 56]
  3139.  
  3140. RFC 2637        Point-to-Point Tunneling Protocol (PPTP)       July 1999
  3141.  
  3142.  
  3143. 8. Full Copyright Statement
  3144.  
  3145.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  3146.  
  3147.    This document and translations of it may be copied and furnished to
  3148.    others, and derivative works that comment on or otherwise explain it
  3149.    or assist in its implementation may be prepared, copied, published
  3150.    and distributed, in whole or in part, without restriction of any
  3151.    kind, provided that the above copyright notice and this paragraph are
  3152.    included on all such copies and derivative works.  However, this
  3153.    document itself may not be modified in any way, such as by removing
  3154.    the copyright notice or references to the Internet Society or other
  3155.    Internet organizations, except as needed for the purpose of
  3156.    developing Internet standards in which case the procedures for
  3157.    copyrights defined in the Internet Standards process must be
  3158.    followed, or as required to translate it into languages other than
  3159.    English.
  3160.  
  3161.    The limited permissions granted above are perpetual and will not be
  3162.    revoked by the Internet Society or its successors or assigns.
  3163.  
  3164.    This document and the information contained herein is provided on an
  3165.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  3166.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  3167.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  3168.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  3169.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  3170.  
  3171. Acknowledgement
  3172.  
  3173.    Funding for the RFC Editor function is currently provided by the
  3174.    Internet Society.
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194. Hamzeh, et al.               Informational                     [Page 57]
  3195.  
  3196.