summaryrefslogtreecommitdiff
path: root/doc/rfc2637.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc2637.txt')
-rw-r--r--doc/rfc2637.txt3195
1 files changed, 0 insertions, 3195 deletions
diff --git a/doc/rfc2637.txt b/doc/rfc2637.txt
deleted file mode 100644
index 56e9e0f..0000000
--- a/doc/rfc2637.txt
+++ /dev/null
@@ -1,3195 +0,0 @@
-
-
-
-
-
-
-Network Working Group K. Hamzeh
-Request for Comments: 2637 Ascend Communications
-Category: Informational G. Pall
- Microsoft Corporation
- W. Verthein
- 3Com
- J. Taarud
- Copper Mountain Networks
- W. Little
- ECI Telematics
- G. Zorn
- Microsoft Corporation
- July 1999
-
-
- Point-to-Point Tunneling Protocol (PPTP)
-
-Status of this Memo
-
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
-IESG Note
-
- The PPTP protocol was developed by a vendor consortium. The
- documentation of PPTP is provided as information to the Internet
- community. The PPP WG is currently defining a Standards Track
- protocol (L2TP) for tunneling PPP across packet-switched networks.
-
-Abstract
-
- This document specifies a protocol which allows the Point to Point
- Protocol (PPP) to be tunneled through an IP network. PPTP does not
- specify any changes to the PPP protocol but rather describes a new
- vehicle for carrying PPP. A client-server architecture is defined in
- order to decouple functions which exist in current Network Access
- Servers (NAS) and support Virtual Private Networks (VPNs). The PPTP
- Network Server (PNS) is envisioned to run on a general purpose
- operating system while the client, referred to as a PPTP Access
- Concentrator (PAC) operates on a dial access platform. PPTP
- specifies a call-control and management protocol which allows the
- server to control access for dial-in circuit switched calls
- originating from a PSTN or ISDN or to initiate outbound circuit-
-
-
-
-Hamzeh, et al. Informational [Page 1]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- switched connections. PPTP uses an enhanced GRE (Generic Routing
- Encapsulation) mechanism to provide a flow- and congestion-controlled
- encapsulated datagram service for carrying PPP packets.
-
-Specification of Requirements
-
- In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
- "recommended", "SHOULD", and "SHOULD NOT" are to be interpreted as
- described in [12].
-
- The words "silently discard", when used in reference to the behavior
- of an implementation upon receipt of an incoming packet, are to be
- interpreted as follows: the implementation discards the datagram
- without further processing, and without indicating an error to the
- sender. The implementation SHOULD provide the capability of logging
- the error, including the contents of the discarded datagram, and
- SHOULD record the event in a statistics counter.
-
-Table of Contents
-
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
- 1.1. Protocol Goals and Assumptions . . . . . . . . . . . . . . 4
- 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
- 1.3. Protocol Overview . . . . . . . . . . . . . . . . . . . . 6
- 1.3.1. Control Connection Overview . . . . . . . . . . . . . . 7
- 1.3.2. Tunnel Protocol Overview . . . . . . . . . . . . . . . . 7
- 1.4. Message Format and Protocol Extensibility . . . . . . . . 8
- 2. Control Connection Protocol Specification . . . . . . . . . 10
- 2.1. Start-Control-Connection-Request . . . . . . . . . . . . . 10
- 2.2. Start-Control-Connection-Reply . . . . . . . . . . . . . . 12
- 2.3. Stop-Control-Connection-Request . . . . . . . . . . . . . 15
- 2.4. Stop-Control-Connection-Reply . . . . . . . . . . . . . . 16
- 2.5. Echo-Request . . . . . . . . . . . . . . . . . . . . . . . 17
- 2.6. Echo-Reply . . . . . . . . . . . . . . . . . . . . . . . . 18
- 2.7. Outgoing-Call-Request . . . . . . . . . . . . . . . . . . 19
- 2.8. Outgoing-Call-Reply . . . . . . . . . . . . . . . . . . . 22
- 2.9. Incoming-Call-Request . . . . . . . . . . . . . . . . . . 25
- 2.10. Incoming-Call-Reply . . . . . . . . . . . . . . . . . . . 28
- 2.11. Incoming-Call-Connected . . . . . . . . . . . . . . . . . 29
- 2.12. Call-Clear-Request . . . . . . . . . . . . . . . . . . . 31
- 2.13. Call-Disconnect-Notify . . . . . . . . . . . . . . . . . 32
- 2.14. WAN-Error-Notify . . . . . . . . . . . . . . . . . . . . 33
- 2.15. Set-Link-Info . . . . . . . . . . . . . . . . . . . . . . 35
- 2.16. General Error Codes . . . . . . . . . . . . . . . . . . . 36
- 3. Control Connection Protocol Operation . . . . . . . . . . . 36
- 3.1. Control Connection States . . . . . . . . . . . . . . . . 37
- 3.1.1. Control Connection Originator (may be PAC or PNS) . . . 37
- 3.1.2. Control connection Receiver (may be PAC or PNS) . . . . 39
-
-
-
-Hamzeh, et al. Informational [Page 2]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 3.1.3. Start Control Connection Initiation Request Collision . 40
- 3.1.4. Keep Alives and Timers . . . . . . . . . . . . . . . . . 40
- 3.2. Call States . . . . . . . . . . . . . . . . . . . . . . . 41
- 3.2.1. Timing considerations . . . . . . . . . . . . . . . . . 41
- 3.2.2. Call ID Values . . . . . . . . . . . . . . . . . . . . . 41
- 3.2.3. Incoming Calls . . . . . . . . . . . . . . . . . . . . . 41
- 3.2.3.1. PAC Incoming Call States . . . . . . . . . . . . . . . 42
- 3.2.3.2. PNS Incoming Call States . . . . . . . . . . . . . . . 43
- 3.2.4. Outgoing Calls . . . . . . . . . . . . . . . . . . . . . 44
- 3.2.4.1. PAC Outgoing Call States . . . . . . . . . . . . . . . 45
- 3.2.4.2. PNS Outgoing Call States . . . . . . . . . . . . . . . 46
- 4. Tunnel Protocol Operation . . . . . . . . . . . . . . . . . 47
- 4.1. Enhanced GRE header . . . . . . . . . . . . . . . . . . . 47
- 4.2. Sliding Window Protocol . . . . . . . . . . . . . . . . . 49
- 4.2.1. Initial Window Size . . . . . . . . . . . . . . . . . . 49
- 4.2.2. Closing the Window . . . . . . . . . . . . . . . . . . . 49
- 4.2.3. Opening the Window . . . . . . . . . . . . . . . . . . . 50
- 4.2.4. Window Overflow . . . . . . . . . . . . . . . . . . . . 50
- 4.2.5. Multi-packet Acknowledgment . . . . . . . . . . . . . . 50
- 4.3. Out-of-sequence Packets . . . . . . . . . . . . . . . . . 50
- 4.4. Acknowledgment Time-Outs . . . . . . . . . . . . . . . . . 51
- 4.4.1. Calculating Adaptive Acknowledgment Time-Out . . . . . . 53
- 4.4.2. Congestion Control: Adjusting for Time-Out . . . . . . . 54
- 5. Security Considerations . . . . . . . . . . . . . . . . . . 54
- 6. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 55
- 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 56
- 8. Full Copyright Statement . . . . . . . . . . . . . . . . . . 57
-
-1. Introduction
-
- PPTP allows existing Network Access Server (NAS) functions to be
- separated using a client-server architecture. Traditionally, the
- following functions are implemented by a NAS:
-
- 1) Physical native interfacing to PSTN or ISDN and control of
- external modems or terminal adapters.
-
- A NAS may interface directly to a telco analog or digital
- circuit or attach via an external modem or terminal adapter.
- Control of a circuit-switched connection is accomplished with
- either modem control or DSS1 ISDN call control protocols.
-
- The NAS, in conjunction with the modem or terminal adapters,
- may perform rate adaption, analog to digital conversion, sync
- to async conversion or a number of other alterations of data
- streams.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 3]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 2) Logical termination of a Point-to-Point-Protocol (PPP) Link
- Control Protocol (LCP) session.
-
- 3) Participation in PPP authentication protocols [3,9,10].
-
- 4) Channel aggregation and bundle management for PPP Multilink
- Protocol.
-
- 5) Logical termination of various PPP network control protocols
- (NCP).
-
- 6) Multiprotocol routing and bridging between NAS interfaces.
-
- PPTP divides these functions between the PAC and PNS. The PAC is
- responsible for functions 1, 2, and possibly 3. The PNS may be
- responsible for function 3 and is responsible for functions 4, 5, and
- 6. The protocol used to carry PPP protocol data units (PDUs) between
- the PAC and PNS, as well as call control and management is addressed
- by PPTP.
-
- The decoupling of NAS functions offers these benefits:
-
- Flexible IP address management. Dial-in users may maintain a
- single IP address as they dial into different PACs as long as they
- are served from a common PNS. If an enterprise network uses
- unregistered addresses, a PNS associated with the enterprise
- assigns addresses meaningful to the private network.
-
- Support of non-IP protocols for dial networks behind IP networks.
- This allows Appletalk and IPX, for example to be tunneled through
- an IP-only provider. The PAC need not be capable of processing
- these protocols.
-
- A solution to the "multilink hunt-group splitting" problem.
- Multilink PPP, typically used to aggregate ISDN B channels,
- requires that all of the channels composing a multilink bundle be
- grouped at a single NAS. Since a multilink PPP bundle can be
- handled by a single PNS, the channels comprising the bundle may be
- spread across multiple PACs.
-
-1.1. Protocol Goals and Assumptions
-
- The PPTP protocol is implemented only by the PAC and PNS. No other
- systems need to be aware of PPTP. Dial networks may be connected to a
- PAC without being aware of PPTP. Standard PPP client software should
- continue to operate on tunneled PPP links.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 4]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- PPTP can also be used to tunnel a PPP session over an IP network. In
- this configuration the PPTP tunnel and the PPP session runs between
- the same two machines with the caller acting as a PNS.
-
- It is envisioned that there will be a many-to-many relationship
- between PACs and PNSs. A PAC may provide service to many PNSs. For
- example, an Internet service provider may choose to support PPTP for
- a number of private network clients and create VPNs for them. Each
- private network may operate one or more PNSs. A single PNS may
- associate with many PACs to concentrate traffic from a large number
- of geographically diverse sites.
-
- PPTP uses an extended version of GRE to carry user PPP packets. These
- enhancements allow for low-level congestion and flow control to be
- provided on the tunnels used to carry user data between PAC and PNS.
- This mechanism allows for efficient use of the bandwidth available
- for the tunnels and avoids unnecessary retransmisions and buffer
- overruns. PPTP does not dictate the particular algorithms to be used
- for this low level control but it does define the parameters that
- must be communicated in order to allow such algorithms to work.
- Suggested algorithms are included in section 4.
-
-1.2. Terminology
-
- Analog Channel
-
- A circuit-switched communication path which is intended to carry
- 3.1 Khz audio in each direction.
-
- Digital Channel
-
- A circuit-switched communication path which is intended to carry
- digital information in each direction.
-
- Call
-
- A connection or attempted connection between two terminal
- endpoints on a PSTN or ISDN -- for example, a telephone call
- between two modems.
-
- Control Connection
-
- A control connection is created for each PAC, PNS pair and
- operates over TCP [4]. The control connection governs aspects of
- the tunnel and of sessions assigned to the tunnel.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 5]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Dial User
-
- An end-system or router attached to an on-demand PSTN or ISDN
- which is either the initiator or recipient of a call.
-
- Network Access Server (NAS)
-
- A device providing temporary, on-demand network access to users.
- This access is point-to-point using PSTN or ISDN lines.
-
- PPTP Access Concentrator (PAC)
-
- A device attached to one or more PSTN or ISDN lines capable of PPP
- operation and of handling the PPTP protocol. The PAC need only
- implement TCP/IP to pass traffic to one or more PNSs. It may also
- tunnel non-IP protocols.
-
- PPTP Network Server (PNS)
-
- A PNS is envisioned to operate on general-purpose computing/server
- platforms. The PNS handles the server side of the PPTP protocol.
- Since PPTP relies completely on TCP/IP and is independent of the
- interface hardware, the PNS may use any combination of IP
- interface hardware including LAN and WAN devices.
-
- Session
-
- PPTP is connection-oriented. The PNS and PAC maintain state for
- each user that is attached to a PAC. A session is created when
- end-to-end PPP connection is attempted between a dial user and the
- PNS. The datagrams related to a session are sent over the tunnel
- between the PAC and PNS.
-
- Tunnel
-
- A tunnel is defined by a PNS-PAC pair. The tunnel protocol is
- defined by a modified version of GRE [1,2]. The tunnel carries
- PPP datagrams between the PAC and the PNS. Many sessions are
- multiplexed on a single tunnel. A control connection operating
- over TCP controls the establishment, release, and maintenance of
- sessions and of the tunnel itself.
-
-1.3. Protocol Overview
-
- There are two parallel components of PPTP: 1) a Control Connection
- between each PAC-PNS pair operating over TCP and 2) an IP tunnel
- operating between the same PAC-PNS pair which is used to transport
- GRE encapsulated PPP packets for user sessions between the pair.
-
-
-
-Hamzeh, et al. Informational [Page 6]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-1.3.1. Control Connection Overview
-
- Before PPP tunneling can occur between a PAC and PNS, a control
- connection must be established between them. The control connection
- is a standard TCP session over which PPTP call control and management
- information is passed. The control session is logically associated
- with, but separate from, the sessions being tunneled through a PPTP
- tunnel. For each PAC-PNS pair both a tunnel and a control connection
- exist. The control connection is responsible for establishment,
- management, and release of sessions carried through the tunnel. It is
- the means by which a PNS is notified of an incoming call at an
- associated PAC, as well as the means by which a PAC is instructed to
- place an outgoing dial call.
-
- A control connection can be established by either the PNS or the PAC.
- Following the establishment of the required TCP connection, the PNS
- and PAC establish the control connection using the Start-Control-
- Connection-Request and -Reply messages. These messages are also used
- to exchange information about basic operating capabilities of the PAC
- and PNS. Once the control connection is established, the PAC or PNS
- may initiate sessions by requesting outbound calls or responding to
- inbound requests. The control connection may communicate changes in
- operating characteristics of an individual user session with a Set-
- Link-Info message. Individual sessions may be released by either the
- PAC or PNS, also through Control Connection messages.
-
- The control connection itself is maintained by keep-alive echo
- messages. This ensures that a connectivity failure between the PNS
- and the PAC can be detected in a timely manner. Other failures can be
- reported via the
-
- Wan-Error-Notify message, also on the control connection.
-
- It is intended that the control connection will also carry management
- related messages in the future, such as a message allowing the PNS to
- request the status of a given PAC; these message types have not yet
- been defined.
-
-1.3.2. Tunnel Protocol Overview
-
- PPTP requires the establishment of a tunnel for each communicating
- PNS-PAC pair. This tunnel is used to carry all user session PPP
- packets for sessions involving a given PNS-PAC pair. A key which is
- present in the GRE header indicates which session a particular PPP
- packet belongs to.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 7]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- In this manner, PPP packets are multiplexed and demultiplexed over a
- single tunnel between a given PNS-PAC pair. The value to use in the
- key field is established by the call establishment procedure which
- takes place on the control connection.
-
- The GRE header also contains acknowledgment and sequencing
- information that is used to perform some level of congestion-control
- and error detection over the tunnel. Again the control connection is
- used to determine rate and buffering parameters that are used to
- regulate the flow of PPP packets for a particular session over the
- tunnel. PPTP does not specify the particular algorithms to use for
- congestion-control and flow-control. Suggested algorithms for the
- determination of adaptive time-outs to recover from dropped data or
- acknowledgments on the tunnel are included in section 4.4 of this
- document.
-
-1.4. Message Format and Protocol Extensibility
-
- PPTP defines a set of messages sent as TCP data on the control
- connection between a PNS and a given PAC. The TCP session for the
- control connection is established by initiating a TCP connection to
- port 1723 [6]. The source port is assigned to any unused port number.
-
- Each PPTP Control Connection message begins with an 8 octet fixed
- header portion. This fixed header contains the following: the total
- length of the message, the PPTP Message Type indicator, and a "Magic
- Cookie".
-
- Two Control Connection message types are indicated by the PPTP
- Message Type field:
-
- 1 - Control Message
- 2 - Management Message
-
- Management messages are currently not defined.
-
- The Magic Cookie is always sent as the constant 0x1A2B3C4D. Its
- basic purpose is to allow the receiver to ensure that it is properly
- synchronized with the TCP data stream. It should not be used as a
- means for resynchronizing the TCP data stream in the event that a
- transmitter issues an improperly formatted message. Loss of
- synchronization must result in immediate closing of the control
- connection's TCP session.
-
- For clarity, all Control Connection message templates in the next
- section include the entire PPTP Control Connection message header.
- Numbers preceded by 0x are hexadecimal values.
-
-
-
-
-Hamzeh, et al. Informational [Page 8]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-The currently defined Control Messages, grouped by function, are:
-
- Control Message Message Code
-
- (Control Connection Management)
-
- Start-Control-Connection-Request 1
- Start-Control-Connection-Reply 2
- Stop-Control-Connection-Request 3
- Stop-Control-Connection-Reply 4
- Echo-Request 5
- Echo-Reply 6
-
- (Call Management)
-
- Outgoing-Call-Request 7
- Outgoing-Call-Reply 8
- Incoming-Call-Request 9
- Incoming-Call-Reply 10
- Incoming-Call-Connected 11
- Call-Clear-Request 12
- Call-Disconnect-Notify 13
-
- (Error Reporting)
-
- WAN-Error-Notify 14
-
- (PPP Session Control)
-
- Set-Link-Info 15
-
- The Start-Control-Connection-Request and -Reply messages determine
- which version of the Control Connection protocol will be used. The
- version number field carried in these messages consists of a version
- number in the high octet and a revision number in the low octet.
- Version handling is described in section 2. The current value of the
- version number field is 0x0100 for version 1, revision 0.
-
- The use of the GRE-like header for the encapsulation of PPP user
- packets is specified in section 4.1.
-
- The MTU for the user data packets encapsulated in GRE is 1532 octets,
- not including the IP and GRE headers.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 9]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-2. Control Connection Protocol Specification
-
- Control Connection messages are used to establish and clear user
- sessions. The first set of Control Connection messages are used to
- maintain the control connection itself. The control connection is
- initiated by either the PNS or PAC after they establish the
- underlying TCP connection. The procedure and configuration
- information required to determine which TCP connections are
- established is not covered by this protocol.
-
- The following Control Connection messages are all sent as user data
- on the established TCP connection between a given PNS-PAC pair. Note
- that care has been taken to ensure that all word (2 octet) and
- longword (4 octet) values begin on appropriate boundaries. All data
- is sent in network order (high order octets first). Any "reserved"
- fields MUST be sent as 0 values to allow for protocol extensibility.
-
-2.1. Start-Control-Connection-Request
-
- The Start-Control-Connection-Request is a PPTP control message used
- to establish the control connection between a PNS and a PAC. Each
- PNS-PAC pair requires a dedicated control connection to be
- established. A control connection must be established before any
- other PPTP messages can be issued. The establishment of the control
- connection can be initiated by either the PNS or PAC. A procedure
- which handles the occurrence of a collision between PNS and PAC
- Start-Control-Connection-Requests is described in section 3.1.3.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 10]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Protocol Version | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Capabilities |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Capabilities |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum Channels | Firmware Revision |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Host Name (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Vendor String (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP
- message, including the entire PPTP
- header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D. This constant value is used
- as a sanity check on received messages
- (see section 1.4).
-
- Control Message Type 1 for Start-Control-Connection-Request.
-
- Reserved0 This field MUST be 0.
-
- Protocol Version The version of the PPTP protocol that the
- sender wishes to use.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 11]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Framing Capabilities A set of bits indicating the type of framing
- that the sender of this message can provide.
- The currently defined bit settings are:
-
- 1 - Asynchronous Framing supported
-
- 2 - Synchronous Framing supported
-
- Bearer Capabilities A set of bits indicating the bearer
- capabilities that the sender of this message
- can provide. The currently defined bit
- settings are:
-
- 1 - Analog access supported
-
- 2 - Digital access supported
-
- Maximum Channels The total number of individual PPP sessions
- this PAC can support. In Start-Control-
- Connection-Requests issued by the PNS, this
- value SHOULD be set to 0. It MUST be
- ignored by the PAC.
-
- Firmware Revision This field contains the firmware revision
- number of the issuing PAC, when issued by
- the PAC, or the version of the PNS PPTP
- driver if issued by the PNS.
-
- Host Name A 64 octet field containing the DNS name of
- the issuing PAC or PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of value
- 0.
-
- Vendor Name A 64 octet field containing a vendor
- specific string describing the type of PAC
- being used, or the type of PNS software
- being used if this request is issued by the
- PNS. If less than 64 octets in length, the
- remainder of this field SHOULD be filled
- with octets of value 0.
-
-2.2. Start-Control-Connection-Reply
-
- The Start-Control-Connection-Reply is a PPTP control message sent in
- reply to a received Start-Control-Connection-Request message. This
- message contains a result code indicating the result of the control
- connection establishment attempt.
-
-
-
-Hamzeh, et al. Informational [Page 12]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Protocol Version | Result Code | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Capability |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Capability |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum Channels | Firmware Revision |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Host Name (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Vendor String (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 2 for Start-Control-Connection-Reply.
-
- Reserved0 This field MUST be 0.
-
- Protocol Version The version of the PPTP protocol that the
- sender wishes to use.
-
- Result Code Indicates the result of the command channel
- establishment attempt. Current valid Result
- Code values are:
-
- 1 - Successful channel establishment
-
- 2 - General error -- Error Code
- indicates the problem
-
-
-
-Hamzeh, et al. Informational [Page 13]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 3 - Command channel already exists;
-
- 4 - Requester is not authorized to
- establish a command channel
-
- 5 - The protocol version of the
- requester is not supported
-
- Error Code This field is set to 0 unless a "General
- Error" exists, in which case Result Code is
- set to 2 and this field is set to the value
- corresponding to the general error condition
- as specified in section 2.2.
-
- Framing Capabilities A set of bits indicating the type of framing
- that the sender of this message can provide.
- The currently defined bit settings are:
-
- 1 - Asynchronous Framing supported
-
- 2 - Synchronous Framing supported.
-
- Bearer Capabilities A set of bits indicating the bearer
- capabilities that the sender of this message
- can provide. The currently defined bit
- settings are:
-
- 1 - Analog access supported
-
- 2 - Digital access supported
-
- Maximum Channels The total number of individual PPP sessions
- this PAC can support. In a Start-Control-
- Connection-Reply issued by the PNS, this
- value SHOULD be set to 0 and it must be
- ignored by the PAC. The PNS MUST NOT use
- this value to try to track the remaining
- number of PPP sessions that the PAC will
- allow.
-
- Firmware Revision This field contains the firmware revision
- number of the issuing PAC, or the version of
- the PNS PPTP driver if issued by the PNS.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 14]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Host Name A 64 octet field containing the DNS name of
- the issuing PAC or PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of value
- 0.
-
- Vendor Name A 64 octet field containing a vendor
- specific string describing the type of PAC
- being used, or the type of PNS software
- being used if this request is issued by the
- PNS. If less than 64 octets in length, the
- remainder of this field SHOULD be filled
- with octets of value 0.
-
-2.3. Stop-Control-Connection-Request
-
- The Stop-Control-Connection-Request is a PPTP control message sent by
- one peer of a PAC-PNS control connection to inform the other peer
- that the control connection should be closed. In addition to closing
- the control connection, all active user calls are implicitly cleared.
- The reason for issuing this request is indicated in the Reason field.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Reason | Reserved1 | Reserved2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 3 for Stop-Control-Connection-Request.
-
- Reserved0 This field MUST be 0.
-
- Reason Indicates the reason for the control
- connection being closed. Current valid
- Reason values are:
-
-
-
-Hamzeh, et al. Informational [Page 15]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 1 (None) - General request to clear
- control connection
-
- 2 (Stop-Protocol) - Can't support
- peer's version of the protocol
-
- 3 (Stop-Local-Shutdown) - Requester is
- being shut down
-
- Reserved1, Reserved2 These fields MUST be 0.
-
-2.4. Stop-Control-Connection-Reply
-
- The Stop-Control-Connection-Reply is a PPTP control message sent by
- one peer of a PAC-PNS control connection upon receipt of a Stop-
- Control-Connection-Request from the other peer.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 4 for Stop-Control-Connection-Reply.
-
- Reserved0 This field MUST be 0.
-
- Result Code Indicates the result of the attempt to close
- the control connection. Current valid Result
- Code values are:
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 16]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 1 (OK) - Control connection closed
-
- 2 (General Error) - Control connection
- not closed for reason indicated in
- Error Code
-
- Error Code This field is set to 0 unless a "General
- Error" exists, in which case Result Code is
- set to 2 and this field is set to the value
- corresponding to the general error condition
- as specified in section 2.2.
-
- Reserved1 This field MUST be 0.
-
-2.5. Echo-Request
-
- The Echo-Request is a PPTP control message sent by either peer of a
- PAC-PNS control connection. This control message is used as a "keep-
- alive" for the control connection. The receiving peer issues an
- Echo-Reply to each Echo-Request received. As specified in section
- 3.1.4, if the sender does not receive an Echo-Reply in response to an
- Echo-Request, it will eventually clear the control connection.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 5 for Echo-Request.
-
- Reserved0 This field MUST be 0.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 17]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Identifier A value set by the sender of the Echo-
- Request that is used to match the reply with
- the corresponding request.
-
-2.6. Echo-Reply
-
- The Echo-Reply is a PPTP control message sent by either peer of a
- PAC-PNS control connection in response to the receipt of an Echo-
- Request.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 6 for Echo-Reply.
-
- Reserved0 This field MUST be 0.
-
- Identifier The contents of the identify field from the
- received Echo-Request is copied to this
- field.
-
- Result Code Indicates the result of the receipt of the
- Echo-Request. Current valid Result Code
- values are:
-
- 1 (OK) - The Echo-Reply is valid
-
- 2 (General Error) - Echo-Request not
- accepted for the reason indicated in
- Error Code
-
-
-
-Hamzeh, et al. Informational [Page 18]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Reserved1 This field MUST be 0.
-
-2.7. Outgoing-Call-Request
-
- The Outgoing-Call-Request is a PPTP control message sent by the PNS
- to the PAC to indicate that an outbound call from the PAC is to be
- established. This request provides the PAC with information required
- to make the call. It also provides information to the PAC that is
- used to regulate the transmission of data to the PNS for this session
- once it is established.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 19]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Call Serial Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Minimum BPS |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Maximum BPS |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Bearer Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Processing Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Phone Number Length | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Phone Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Subaddress (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 7 for Outgoing-Call-Request.
-
- Reserved0 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 20]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Call ID A unique identifier, unique to a particular
- PAC-PNS pair assigned by the PNS to this
- session. It is used to multiplex and
- demultiplex data sent over the tunnel
- between the PNS and PAC involved in this
- session.
-
- Call Serial Number An identifier assigned by the PNS to this
- session for the purpose of identifying this
- particular session in logged session
- information. Unlike the Call ID, both the
- PNS and PAC associate the same Call Serial
- Number with a given session. The combination
- of IP address and call serial number SHOULD
- be unique.
-
- Minimum BPS The lowest acceptable line speed (in
- bits/second) for this session.
-
- Maximum BPS The highest acceptable line speed (in
- bits/second) for this session.
-
- Bearer Type A value indicating the bearer capability
- required for this outgoing call. The
- currently defined values are:
-
- 1 - Call to be placed on an analog
- channel
-
- 2 - Call to be placed on a digital
- channel
-
- 3 - Call can be placed on any type of
- channel
-
- Framing Type A value indicating the type of PPP framing
- to be used for this outgoing call.
-
- 1 - Call to use Asynchronous framing
-
- 2 - Call to use Synchronous framing
-
- 3 - Call can use either type of
- framing
-
- Packet Recv. Window Size The number of received data packets the PNS
- will buffer for this session.
-
-
-
-
-Hamzeh, et al. Informational [Page 21]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Packet Processing Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PNS from the PAC. This value is specified
- in units of 1/10 seconds. For the PNS this
- number should be very small. See section
- 4.4 for a description of how this value is
- determined and used.
-
- Phone Number Length The actual number of valid digits in the
- Phone Number field.
-
- Reserved1 This field MUST be 0.
-
- Phone Number The number to be dialed to establish the
- outgoing session. For ISDN and analog calls
- this field is an ASCII string. If the Phone
- Number is less than 64 octets in length, the
- remainder of this field is filled with
- octets of value 0.
-
- Subaddress A 64 octet field used to specify additional
- dialing information. If the subaddress is
- less than 64 octets long, the remainder of
- this field is filled with octets of value 0.
-
-2.8. Outgoing-Call-Reply
-
- The Outgoing-Call-Reply is a PPTP control message sent by the PAC to
- the PNS in response to a received Outgoing-Call-Request message. The
- reply indicates the result of the outgoing call attempt. It also
- provides information to the PNS about particular parameters used for
- the call. It provides information to allow the PNS to regulate the
- transmission of data to the PAC for this session.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 22]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Peer's Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Cause Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Connect Speed |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Processing Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Physical Channel ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 8 for Outgoing-Call-Reply.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for the tunnel, assigned
- by the PAC to this session. It is used to
- multiplex and demultiplex data sent over the
- tunnel between the PNS and PAC involved in
- this session.
-
- Peer's Call ID This field is set to the value received in
- the Call ID field of the corresponding
- Outgoing-Call-Request message. It is used
- by the PNS to match the Outgoing-Call-Reply
- with the Outgoing-Call-Request it issued. It
- also is used as the value sent in the GRE
- header for mux/demuxing.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 23]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Result Code This value indicates the result of the
- Outgoing-Call-Request attempt. Currently
- valid values are:
-
- 1 (Connected) - Call established with
- no errors
-
- 2 (General Error) - Outgoing Call not
- established for the reason indicated
- in Error Code
-
- 3 (No Carrier) - Outgoing Call failed
- due to no carrier detected
-
- 4 (Busy) - Outgoing Call failed due to
- detection of a busy signal
-
- 5 (No Dial Tone) - Outgoing Call
- failed due to lack of a dial tone
-
- 6 (Time-out) - Outgoing Call was not
- established within time allotted by
- PAC
-
- 7 (Do Not Accept) - Outgoing Call
- administratively prohibited
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Cause Code This field gives additional failure
- information. Its value can vary depending
- upon the type of call attempted. For ISDN
- call attempts it is the Q.931 cause code.
-
- Connect Speed The actual connection speed used, in
- bits/second.
-
- Packet Recv. Window Size The number of received data packets the PAC
- will buffer for this session.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 24]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Packet Processing Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is specified
- in units of 1/10 seconds. For the PAC, this
- number is related to the size of the buffer
- used to hold packets to be sent to the
- client and to the speed of the link to the
- client. This value should be set to the
- maximum delay that can normally occur
- between the time a packet arrives at the PAC
- and is delivered to the client. See section
- 4.4 for an example of how this value is
- determined and used.
-
- Physical Channel ID This field is set by the PAC in a vendor-
- specific manner to the physical channel
- number used to place this call. It is used
- for logging purposes only.
-
-2.9. Incoming-Call-Request
-
- The Incoming-Call-Request is a PPTP control message sent by the PAC
- to the PNS to indicate that an inbound call is to be established from
- the PAC. This request provides the PNS with parameter information
- for the incoming call.
-
- This message is the first in the "three-way handshake" used by PPTP
- for establishing incoming calls. The PAC may defer answering the
- call until it has received an Incoming-Call-Reply from the PNS
- indicating that the call should be established. This mechanism allows
- the PNS to obtain sufficient information about the call before it is
- answered to determine whether the call should be answered or not.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 25]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Call Serial Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call Bearer Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Physical Channel ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Dialed Number Length | Dialing Number Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Dialed Number (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Dialing Number (64 octets) +
- |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Subaddress (64 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 9 for Incoming-Call-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for this tunnel,
- assigned by the PAC to this session. It is
- used to multiplex and demultiplex data sent
- over the tunnel between the PNS and PAC
- involved in this session.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 26]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Call Serial Number An identifier assigned by the PAC to this
- session for the purpose of identifying this
- particular session in logged session
- information. Unlike the Call ID, both the
- PNS and PAC associate the same Call Serial
- Number to a given session. The combination
- of IP address and call serial number should
- be unique.
-
- Bearer Type A value indicating the bearer capability
- used for this incoming call. Currently
- defined values are:
-
- 1 - Call is on an analog channel
-
- 2 - Call is on a digital channel
-
- Physical Channel ID This field is set by the PAC in a vendor-
- specific manner to the number of the
- physical channel this call arrived on.
-
- Dialed Number Length The actual number of valid digits in the
- Dialed Number field.
-
- Dialing Number Length The actual number of valid digits in the
- Dialing Number field.
-
- Dialed Number The number that was dialed by the caller.
- For ISDN and analog calls this field is an
- ASCII string. If the Dialed Number is less
- than 64 octets in length, the remainder of
- this field is filled with octets of value 0.
-
- Dialing Number The number from which the call was placed.
- For ISDN and analog calls this field is an
- ASCII string. If the Dialing Number is less
- than 64 octets in length, the remainder of
- this field is filled with octets of value 0.
-
- Subaddress A 64 octet field used to specify additional
- dialing information. If the subaddress is
- less than 64 octets long, the remainder of
- this field is filled with octets of value 0.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 27]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-2.10. Incoming-Call-Reply
-
- The Incoming-Call-Reply is a PPTP control message sent by the PNS to
- the PAC in response to a received Incoming-Call-Request message. The
- reply indicates the result of the incoming call attempt. It also
- provides information to allow the PAC to regulate the transmission of
- data to the PNS for this session.
-
- This message is the second in the three-way handshake used by PPTP
- for establishing incoming calls. It indicates to the PAC whether the
- call should be answered or not.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Peer's Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Result Code | Error Code | Packet Recv. Window Size |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Transmit Delay | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 10 for Incoming-Call-Reply.
-
- Reserved0 This field MUST be 0.
-
- Call ID A unique identifier for this tunnel assigned
- by the PNS to this session. It is used to
- multiplex and demultiplex data sent over the
- tunnel between the PNS and PAC involved in
- this session.
-
- Peer's Call ID This field is set to the value received in
- the Call ID field of the corresponding
- Incoming-Call-Request message. It is used by
-
-
-
-Hamzeh, et al. Informational [Page 28]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- the PAC to match the Incoming-Call-Reply
- with the Incoming-Call-Request it issued.
- This value is included in the GRE header of
- transmitted data packets for this session.
-
- Result Code This value indicates the result of the
- Incoming-Call-Request attempt. Current
- valid Result Code values are:
-
- 1 (Connect) - The PAC should answer
- the incoming call
-
- 2 (General Error) - The Incoming Call
- should not be established due to the
- reason indicated in Error Code
-
- 3 (Do Not Accept) - The PAC should not
- accept the incoming call. It should
- hang up or issue a busy indication
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Packet Recv. Window Size The number of received data packets the PAC
- will buffer for this session.
-
- Packet Transmit Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is specified
- in units of 1/10 seconds.
-
- Reserved1 This field MUST be 0.
-
-2.11. Incoming-Call-Connected
-
- The Incoming-Call-Connected message is a PPTP control message sent by
- the PAC to the PNS in response to a received Incoming-Call-Reply. It
- provides information to the PNS about particular parameters used for
- the call. It also provides information to allow the PNS to regulate
- the transmission of data to the PAC for this session.
-
- This message is the third in the three-way handshake used by PPTP for
- establishing incoming calls. It provides a mechanism for providing
- the PNS with additional information about the call that cannot, in
-
-
-
-Hamzeh, et al. Informational [Page 29]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- general, be obtained at the time the Incoming-Call-Request is issued
- by the PAC.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Connect Speed |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Packet Recv. Window Size | Packet Transmit Delay |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 11 for Incoming-Call-Connected.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID This field is set to the value received in
- the Call ID field of the corresponding
- Incoming-Call-Reply message. It is used by
- the PNS to match the Incoming-Call-Connected
- with the Incoming-Call-Reply it issued.
-
- Connect Speed The actual connection speed used, in
- bits/second.
-
- Packet Recv. Window Size The number of received data packets the PAC
- will buffer for this session.
-
- Packet Transmit Delay A measure of the packet processing delay
- that might be imposed on data sent to the
- PAC from the PNS. This value is specified
- in units of 1/10 seconds.
-
-
-
-Hamzeh, et al. Informational [Page 30]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Framing Type A value indicating the type of PPP framing
- being used by this incoming call.
-
- 1 - Call uses asynchronous framing
-
- 2 - Call uses synchronous framing
-
-2.12. Call-Clear-Request
-
- The Call-Clear-Request is a PPTP control message sent by the PNS to
- the PAC indicating that a particular call is to be disconnected. The
- call being cleared can be either an incoming or outgoing call, in any
- state. The PAC responds to this message with a Call-Disconnect-
- Notify message.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 12 for Call-Clear-Request.
-
- Reserved0 This field MUST be 0.
-
- Call ID The Call ID assigned by the PNS to this
- call. This value is used instead of the
- Peer's Call ID because the latter may not be
- known to the PNS if the call must be aborted
- during call establishment.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 31]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-2.13. Call-Disconnect-Notify
-
- The Call-Disconnect-Notify message is a PPTP control message sent by
- the PAC to the PNS. It is issued whenever a call is disconnected,
- due to the receipt by the PAC of a Call-Clear-Request or for any
- other reason. Its purpose is to inform the PNS of both the
- disconnection and the reason for it.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message Type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Call ID | Result Code | Error Code |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Cause Code | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Call Statistics (128 octets) +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 13 for Call-Disconnect-Notify.
-
- Reserved0 This field MUST be 0.
-
- Call ID The value of the Call ID assigned by the PAC
- to this call. This value is used instead of
- the Peer's Call ID because the latter may
- not be known to the PNS if the call must be
- aborted during call establishment.
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 32]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Result Code This value indicates the reason for the
- disconnect. Current valid Result Code values
- are:
-
- 1 (Lost Carrier) - Call disconnected
- due to loss of carrier
-
- 2 (General Error) - Call disconnected
- for the reason indicated in Error
- Code
-
- 3 (Admin Shutdown) - Call disconnected
- for administrative reasons
-
- 4 (Request) - Call disconnected due to
- received Call-Clear-Request
-
- Error Code This field is set to 0 unless a "General
- Error" condition exists, in which case the
- Result Code is set to 2 and this field is
- set to the value corresponding to the
- general error condition as specified in
- section 2.2.
-
- Cause Code This field gives additional disconnect
- information. Its value varies depending on
- the type of call being disconnected. For
- ISDN calls it is the Q.931 cause code.
-
- Call Statistics This field is an ASCII string containing
- vendor-specific call statistics that can be
- logged for diagnostic purposes. If the
- length of the string is less than 128, the
- remainder of the field is filled with octets
- of value 0.
-
-2.14. WAN-Error-Notify
-
- The WAN-Error-Notify message is a PPTP control message sent by the
- PAC to the PNS to indicate WAN error conditions (conditions that
- occur on the interface supporting PPP). The counters in this message
- are cumulative. This message should only be sent when an error
- occurs, and not more than once every 60 seconds. The counters are
- reset when a new call is established.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 33]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | CRC Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Framing Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Hardware Overruns |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Buffer Overruns |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time-out Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Alignment Errors |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 14 for WAN-Error-Notify.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID Th Call ID assigned by the PNS to this call.
-
- CRC Errors Number of PPP frames received with CRC
- errors since session was established.
-
- Framing Errors Number of improperly framed PPP packets
- received.
-
- Hardware Overruns Number of receive buffer over-runs since
- session was established.
-
- Buffer Overruns Number of buffer over-runs detected since
- session was established.
-
-
-
-Hamzeh, et al. Informational [Page 34]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Time-out Errors Number of time-outs since call was
- established.
-
- Alignment Errors Number of alignment errors since call was
- established.
-
-2.15. Set-Link-Info
-
- The Set-Link-Info message is a PPTP control message sent by the PNS
- to the PAC to set PPP-negotiated options. Because these options can
- change at any time during the life of the call, the PAC must be able
- to update its internal call information dynamically and perform PPP
- negotiation on an active PPP session.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Length | PPTP Message Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Magic Cookie |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Control Message type | Reserved0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Peer's Call ID | Reserved1 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Send ACCM |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Receive ACCM |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Length Total length in octets of this PPTP message,
- including the entire PPTP header.
-
- PPTP Message Type 1 for Control Message.
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 15 for Set-Link-Info.
-
- Reserved0 This field MUST be 0.
-
- Peer's Call ID The value of the Call ID assigned by the PAC
- to this call.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 35]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Send ACCM The send ACCM value the client should use to
- process outgoing PPP packets. The default
- value used by the client until this message
- is received is 0XFFFFFFFF. See [7].
-
- Receive ACCM The receive ACCM value the client should use
- to process incoming PPP packets. The default
- value used by the client until this message
- is received is 0XFFFFFFFF. See [7].
-
-2.16. General Error Codes
-
- General error codes pertain to types of errors which are not specific
- to any particular PPTP request, but rather to protocol or message
- format errors. If a PPTP reply indicates in its Result Code that a
- general error occurred, the General Error value should be examined to
- determined what the error was. The currently defined General Error
- codes and their meanings are:
-
- 0 (None) - No general error
-
- 1 (Not-Connected) - No control connection exists yet for this
- PAC-PNS pair
-
- 2 (Bad-Format) - Length is wrong or Magic Cookie value is
- incorrect
-
- 3 (Bad-Value) - One of the field values was out of range or
- reserved field was non-zero
-
- 4 (No-Resource) - Insufficient resources to handle this command
- now
-
- 5 (Bad-Call ID) - The Call ID is invalid in this context
-
- 6 (PAC-Error) - A generic vendor-specific error occurred in
- the PAC
-
-3. Control Connection Protocol Operation
-
- This section describes the operation of various PPTP control
- connection functions and the Control Connection messages which are
- used to support them. The protocol operation of the control
- connection is simplified because TCP is used to provide a reliable
- transport mechanism. Ordering and retransmission of messages is not
- a concern at this level. The TCP connection itself, however, can
- close at any time and an appropriate error recovery mechanism must be
- provided to handle this case.
-
-
-
-Hamzeh, et al. Informational [Page 36]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Some error recovery procedures are common to all states of the
- control connection. If an expected reply does not arrive within 60
- seconds, the control connection is closed, unless otherwise
- specified. Appropriate logging should be implemented for easy
- determination of the problems and the reasons for closing the control
- connection.
-
- Receipt of an invalid or malformed Control Connection message should
- be logged appropriately, and the control connection should be closed
- and restarted to ensure recovery into a known state.
-
-3.1. Control Connection States
-
- The control connection relies on a standard TCP connection for its
- service. The PPTP control connection protocol is not distinguishable
- between the PNS and PAC, but is distinguishable between the
- originator and receiver. The originating peer is the one which first
- attempts the TCP open. Since either PAC or PNS may originate a
- connection, it is possible for a TCP collision to occur. See section
- 3.1.3 for a description of this situation.
-
-3.1.1. Control Connection Originator (may be PAC or PNS)
-
- TCP Open Indication
- /Send Start Control
- Connection Request +-----------------+
- +------------------------------------>| wait_ctl_reply |
- | +-----------------+
- | Collision/See (4.1.3) Close TCP V V V Receive Start Ctl
- | +-------------------------------+ | | Connection Reply
- | | | | Version OK
- ^ V | V
-+-----------------+ Receive Start Ctl | +-----------------+
-| idle | Connection Reply | | established |
-+-----------------+ Version Not OK | +-----------------+
- ^ | V Local Terminate
- | Receive Stop Control | | /Send Stop
- | Connection Request | | Control Request
- | /Send Stop Control Reply V V
- | Close TCP +-----------------+
- +-------------------------------------| wait_stop_reply |
- +-----------------+
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 37]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- idle
- The control connection originator attempts to open a TCP
- connection to the peer during idle state. When the TCP connection
- is open, the originator transmits a send Start-Control-
- Connection-Request and then enters the wait_ctl_reply state.
-
- wait_ctl_reply
- The originator checks to see if another TCP connection has been
- requested from the same peer, and if so, handles the collision
- situation described in section 3.1.3.
-
- When a Start-Control-Connection-Reply is received, it is examined
- for a compatible version. If the version of the reply is lower
- than the version sent in the request, the older (lower) version
- should be used provided it is supported. If the version in the
- reply is earlier and supported, the originator moves to the
- established state. If the version is earlier and not supported, a
- Stop-Control-Connection-Request SHOULD be sent to the peer and the
- originator moves into the wait_stop_reply state.
-
- established
- An established connection may be terminated by either a local
- condition or the receipt of a Stop-Control-Connection-Request. In
- the event of a local termination, the originator MUST send a
- Stop-Control-Connection-Request and enter the wait_stop_reply
- state.
-
- If the originator receives a Stop-Control-Connection-Request it
- SHOULD send a Stop-Control-Connection-Reply and close the TCP
- connection making sure that the final TCP information has been
- "pushed" properly.
-
- wait_stop_reply
- If a Stop-Control-Connection-Reply is received, the TCP connection
- SHOULD be closed and the control connection becomes idle.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 38]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.1.2. Control connection Receiver (may be PAC or PNS)
-
-Receive Start Control Connection Request
-Version Not OK/Send Start Control Connection
-Reply with Error
- +--------+
- | | Receive Control Connection Request Version OK
- | | /Send Start Control Connection Reply
- | | +----------------------------------------+
- ^ V ^ V
-+-----------------+ Receive Start Ctl +-----------------+
-| Idle | Connection Request | Established |
-+-----------------+ /Send Stop Reply +-----------------+
- ^ ^ Close TCP V V Local Terminate
- | +-------------------------------------+ | /Send Stop
- | | Control Conn.
- | V Request
- | +-----------------+
- +-------------------------------------| Wait-Stop-Reply |
- Receive Stop Control +-----------------+
- Connection Reply
- /Close TCP
-
- idle
- The control connection receiver waits for a TCP open attempt on
- port 1723. When notified of an open TCP connection, it should
- prepare to receive PPTP messages. When a Start-Control-
- Connection-Request is received its version field should be
- examined. If the version is earlier than the receiver's version
- and the earlier version can be supported by the receiver, the
- receiver SHOULD send a Start-Control-Connection-Reply. If the
- version is earlier than the receiver's version and the version
- cannot be supported, the receiver SHOULD send a Start-Connection-
- Reply message, close the TCP connection and remain in the idle
- state. If the receiver's version is the same as earlier than the
- peer's, the receiver SHOULD send a Start-Control-Connection-Reply
- with the receiver's version and enter the established state.
-
- established
- An established connection may be terminated by either a local
- condition or the reception of a Stop-Control-Connection-Request.
- In the event of a local termination, the originator MUST send a
- Stop-Control-Connection-Request and enter the wait_stop_reply
- state.
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 39]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- If the originator receives a Stop-Control-Connection-Request it
- SHOULD send a Stop-Control-Connection-Reply and close the TCP
- connection, making sure that the final TCP information has been
- "pushed" properly.
-
- wait_stop_reply
- If a Stop-Control-Connection-Reply is received, the TCP connection
- SHOULD be closed and the control connection becomes idle.
-
-3.1.3. Start Control Connection Initiation Request Collision
-
- A PAC and PNS must have only one control connection between them. It
- is possible, however, for a PNS and a PAC to simultaneously attempt
- to establish a control connection to each other. When a Start-
- Control-Connection-Request is received on one TCP connection and
- another Start-Control-Connection-Request has already been sent on
- another TCP connection to the same peer, a collision has occurred.
-
- The "winner" of the initiation race is the peer with the higher IP
- address (compared as 32 bit unsigned values, network number more
- significant). For example, if the peers 192.33.45.17 and 192.33.45.89
- collide, the latter will be declared the winner. The loser will
- immediately close the TCP connection it initiated, without sending
- any further PPTP control messages on it and will respond to the
- winner's request with a Start-Control-Connection-Reply message. The
- winner will wait for the Start-Control-Connection-Reply on the
- connection it initiated and also wait for a TCP termination
- indication on the connection the loser opened. The winner MUST NOT
- send any messages on the connection the loser initiated.
-
-3.1.4. Keep Alives and Timers
-
- A control connection SHOULD be closed by closing the underlying TCP
- connection under the following circumstances:
-
- 1. If a control connection is not in the established state (i.e.,
- Start-Control-Connection-Request and Start-Control-Connection-
- Reply have not been exchanged), a control connection SHOULD be
- closed after 60 seconds by a peer waiting for a Start-Control-
- Connection-Request or Start-Control-Connection-Reply message.
-
- 2. If a peer's control connection is in the established state and has
- not received a control message for 60 seconds, it SHOULD send a
- Echo-Request message. If an Echo-Reply is not received 60 seconds
- after the Echo-Request message transmission, the control
- connection SHOULD be closed.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 40]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.2. Call States
-
-3.2.1. Timing considerations
-
- Because of the real-time nature of telephone signaling, both the PNS
- and PAC should be implemented with multi-threaded architectures such
- that messages related to multiple calls are not serialized and
- blocked. The transit delay between the PAC and PNS should not exceed
- one second. The call and connection state figures do not specify
- exceptions caused by timers. The implicit assumption is that since
- the TCP-based control connection is being verified with keep-alives,
- there is less need to maintain strict timers for call control
- messages.
-
- Establishing outbound international calls, including the modem
- training and negotiation sequences, may take in excess of 1 minute so
- the use of short timers is discouraged.
-
- If a state transition does not occur within 1 minute (except for
- connections in the idle or established states), the integrity of the
- protocol processing between the peers is suspect and the ENTIRE
- CONTROL CONNECTION should be closed and restarted. All Call IDs are
- logically released whenever a control connection is started. This
- presumably also helps in preventing toll calls from being "lost" and
- never cleared.
-
-3.2.2. Call ID Values
-
- Each peer assigns a Call ID value to each user session it requests or
- accepts. This Call ID value MUST be unique for the tunnel between the
- PNS and PAC to which it belongs. Tunnels to other peers can use the
- same Call ID number so the receiver of a packet on a tunnel needs to
- associate a user session with a particular tunnel and Call ID. It is
- suggested that the number of potential Call ID values for each tunnel
- be at least twice as large as the maximum number of calls expected on
- a given tunnel.
-
- A session is defined by the triple (PAC, PNS, Call ID).
-
-3.2.3. Incoming Calls
-
- An Incoming-Call-Request message is generated by the PAC when an
- associated telephone line rings. The PAC selects a Call ID and serial
- number and indicates the call bearer type. Modems should always
- indicate analog call type. ISDN calls should indicate digital when
- unrestricted digital service or rate adaption is used and analog if
-
-
-
-
-
-Hamzeh, et al. Informational [Page 41]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- digital modems are involved. Dialing number, dialed number, and
- subaddress may be included in the message if they are available from
- the telephone network.
-
- Once the PAC sends the Incoming-Call-Request, it waits for a response
- from the PNS but does not answer the call from the telephone network.
- The PNS may choose not to accept the call if:
-
- - No resources are available to handle more sessions
-
- - The dialed, dialing, or subaddress fields are not indicative of
- an authorized user
-
- - The bearer service is not authorized or supported
-
- If the PNS chooses to accept the call, it responds with an Incoming-
- Call-Reply which also indicates window sizes (see section 4.2). When
- the PAC receives the Outgoing-Call-Reply, it attempts to connect the
- call, assuming the calling party has not hung up. A final call
- connected message from the PAC to the PNS indicates that the call
- states for both the PAC and the PNS should enter the established
- state.
-
- When the dialed-in client hangs up, the call is cleared normally and
- the PAC sends a Call-Disconnect-Notify message. If the PNS wishes to
- clear a call, it sends a Call-Clear-Request message and then waits
- for a Call-Disconnect-Notify.
-
-3.2.3.1. PAC Incoming Call States
-
- Ring/Send Incoming Call Request +-----------------+
- +----------------------------------------->| wait_reply |
- | +-----------------+
- | Receive Incoming Call Reply V V V
- | Not Accepting | | | Receive Incoming
- | +--------------------------------+ | | Call Reply Accept-
- | | +------------------------------+ | ing/Answer call;
- | | | Abort/Send Call | Send Call
- ^ V V Disconnect Notify V Connected
-+-----------------+ +-----------------+
-| idle |<-----------------------------| established |
-+-----------------+ Receive Clear Call Request +-----------------+
- or telco call dropped
- or local disconnect
- /Send Call Disconnect Notify
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 42]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-The states associated with the PAC for incoming calls are:
-
- idle
- The PAC detects an incoming call on one of its telco interfaces.
- Typically this means an analog line is ringing or an ISDN TE has
- detected an incoming Q.931 SETUP message. The PAC sends an
- Incoming-Call-Request message and moves to the wait_reply state.
-
- wait_reply
- The PAC receives an Incoming-Call-Reply message indicating non-
- willingness to accept the call (general error or don't accept) and
- moves back into the idle state. If the reply message indicates
- that the call is accepted, the PAC sends an Incoming-Call-
- Connected message and enters the established state.
-
- established
- Data is exchanged over the tunnel. The call may be cleared
- following:
-
- An event on the telco connection. The PAC sends a
- Call-Disconnect-Notify message
-
- Receipt of a Call-Clear-Request. The PAC sends a
- Call-Disconnect-Notify message
-
- A local reason. The PAC sends a Call-Disconnect-Notify message.
-
-3.2.3.2. PNS Incoming Call States
-
- Receive Incoming Call Request
- /Send Incoming Call Reply +-----------------+
- Not Accepting if Error | Wait-Connect |
- +-----+ +-----------------+
- | | Receive Incoming Call Req. ^ V V
- | | /Send Incoming Call Reply OK | | | Receive Incoming
- | | +--------------------------------+ | | Call Connect
- ^ V ^ V------------------------------+ V
-+-----------------+ Receive Call Disconnect +-----------------+
-| Idle | Notify +- | Established |
-+-----------------+ | +-----------------+
- ^ ^ | V Local Terminate
- | +----------------------------+ | /Send Call Clear
- | Receive Call Disconnect | Request
- | Notify V
- | +-----------------+
- +--------------------------------------| Wait-Disconnect |
- Receive Call Disconnect +-----------------+
- Notify
-
-
-
-Hamzeh, et al. Informational [Page 43]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-The states associated with the PNS for incoming calls are:
-
- idle
- An Incoming-Call-Request message is received. If the request is
- not acceptable, an Incoming-Call-Reply is sent back to the PAC and
- the PNS remains in the idle state. If the Incoming-Call-Request
- message is acceptable, an Incoming-Call-Reply is sent indicating
- accept in the result code. The session moves to the wait_connect
- state.
-
- wait_connect
- If the session is connected on the PAC, the PAC sends an incoming
- call connect message to the PNS which then moves into established
- state. The PAC may send a Call-Disconnect-Notify to indicate that
- the incoming caller could not be connected. This could happen,
- for example, if a telephone user accidently places a standard
- voice call to a PAC resulting in a handshake failure on the called
- modem.
-
- established
- The session is terminated either by receipt of a Call-Disconnect-
- Notify message from the PAC or by sending a Call-Clear-Request.
- Once a Call-Clear-Request has been sent, the session enters the
- wait_disconnect state.
-
- wait_disconnect
- Once a Call-Disconnect-Notify is received the session moves back
- to the idle state.
-
-3.2.4. Outgoing Calls
-
- Outgoing messages are initiated by a PNS and instruct a PAC to place
- a call on a telco interface. There are only two messages for outgoing
- calls: Outgoing-Call-Request and Outgoing-Call-Reply. The PNS sends
- an Outgoing-Call-Request specifying the dialed party phone number and
- subaddress as well as speed and window parameters. The PAC MUST
- respond to the Outgoing-Call-Request message with an Outgoing-Call-
- Reply message once the PAC determines that:
-
- The call has been successfully connected
-
- A call failure has occurred for reasons such as: no interfaces are
- available for dial-out, the called party is busy or does not
- answer, or no dial tone is detected on the interface chosen for
- dialing
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 44]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.2.4.1. PAC Outgoing Call States
-
-Receive Outgoing Call Request in Error
-/Send Outgoing Call Reply with Error
- |--------+
- | | Receive Outgoing Call Request No Error
- | | /Off Hook; Dial
- | | +-----------------------------------------
- ^ V ^ V
-+-----------------+ Incomplete Call +-----------------+
-| idle | /Send Outgoing Call | wait_cs_ans |
-+-----------------+ Reply with Error +-----------------+
- ^ ^ or Recv. Call Clear Req. V V Telco Answer
- | | /Send Disconnect Notify| | /Send Outgoing
- | +-------------------------------------+ | Call Reply.
- | V
- | +-----------------+
- +-------------------------------------| established |
- Receive Call Clear Request +-----------------+
- or local terminate
- or telco disconnect
- /Hangup call and send
- Call Disconnect Notify
-
- The states associated with the PAC for outgoing calls are:
-
- idle
- Received Outgoing-Call-Request. If this is received in error,
- respond with an Outgoing-Call-Reply with error condition set.
- Otherwise, allocate physical channel to dial on. Place the
- outbound call, wait for a connection, and move to the wait_cs_ans
- state.
-
- wait_cs_ans
- If the call is incomplete, send an Outgoing-Call-Reply with a
- non-zero Error Code. If a timer expires on an outbound call, send
- back an Outgoing-Call-Reply with a non-zero Error Code. If a
- circuit switched connection is established, send an Outgoing-
- Call-Reply indicating success.
-
- established
- If a Call-Clear-Request is received, the telco call SHOULD be
- released via appropriate mechanisms and a Call-Disconnect-Notify
- message SHOULD BE sent to the PNS. If the call is disconnected by
- the client or by the telco interface, a Call-Disconnect-Notify
- message SHOULD be sent to the PNS.
-
-
-
-
-
-Hamzeh, et al. Informational [Page 45]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-3.2.4.2. PNS Outgoing Call States
-
- Open Indication Abort/Send
- /Send Outgoing Call Call Clear
- Request +-----------------+Request
- +-------------------------------->| Wait-Reply |----------+
- | +-----------------+ |
- | Receive Outgoing Call Reply V V Receive Outgoing |
- | with Error | | Call Reply |
- | +-------------------------------+ | No Error |
- ^ V V |
-+-----------------+ +-----------------+ |
-| Idle |<-----------------------------| Established | |
-+-----------------+ Receive Call Disconnect +-----------------+ |
- ^ Notify V Local Terminate |
- | | /Send Call Clear |
- | | Request |
- | Receive Call Disconnect V |
- | Notify +-----------------+ |
- +---------------------------------| Wait-Disconnect |<---------+
- +-----------------+
-
-The states associated with the PNS for outgoing calls are:
-
- idle
- An Outgoing-Call-Request message is sent to the PAC and the
- session moves into the wait_reply state.
-
- wait_reply
- An Outgoing-Call-Reply is received which indicates an error. The
- session returns to idle state. No telco call is active. If the
- Outgoing-Call-Reply does not indicate an error, the telco call is
- connected and the session moves to the established state.
-
- established
- If a Call-Disconnect-Notify is received, the telco call has been
- terminated for the reason indicated in the Result and Cause Codes.
- The session moves back to the idle state. If the PNS chooses to
- terminate the session, it sends a Call-Clear-Request to the PAC
- and then enters the wait_disconnect state.
-
- wait_disconnect
- A session disconnection is waiting to be confirmed by the PAC.
- Once the PNS receives the Call-Disconnect-Notify message, the
- session enters idle state.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 46]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-4. Tunnel Protocol Operation
-
- The user data carried by the PPTP protocol are PPP data packets. PPP
- packets are carried between the PAC and PNS, encapsulated in GRE
- packets which in turn are carried over IP. The encapsulated PPP
- packets are essentially PPP data packets less any media specific
- framing elements. No HDLC flags, bit insertion, control characters,
- or control character escapes are included. No CRCs are sent through
- the tunnel. The IP packets transmitted over the tunnels between a PAC
- and PNS has the following general structure:
-
- +--------------------------------+
- | Media Header |
- +--------------------------------+
- | IP Header |
- +--------------------------------+
- | GRE Header |
- +--------------------------------+
- | PPP Packet |
- +--------------------------------+
-
-4.1. Enhanced GRE header
-
- The GRE header used in PPTP is enhanced slightly from that specified
- in the current GRE protocol specification [1,2]. The main difference
- involves the definition of a new Acknowledgment Number field, used to
- determine if a particular GRE packet or set of packets has arrived at
- the remote end of the tunnel. This Acknowledgment capability is not
- used in conjunction with any retransmission of user data packets. It
- is used instead to determine the rate at which user data packets are
- to be transmitted over the tunnel for a given user session. The
- format of the enhanced GRE header is as follows:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |C|R|K|S|s|Recur|A| Flags | Ver | Protocol Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Key (HW) Payload Length | Key (LW) Call ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number (Optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Acknowledgment Number (Optional) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 47]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- C
- (Bit 0) Checksum Present. Set to zero (0).
-
- R
- (Bit 1) Routing Present. Set to zero (0).
-
- K
- (Bit 2) Key Present. Set to one (1).
- S
- (Bit 3) Sequence Number Present. Set to one (1) if a payload
- (data) packet is present. Set to zero (0) if payload is not
- present (GRE packet is an Acknowledgment only).
-
- s
- (Bit 4) Strict source route present. Set to zero (0).
-
- Recur
- (Bits 5-7) Recursion control. Set to zero (0).
-
- A
- (Bit 8) Acknowledgment sequence number present. Set to one (1) if
- packet contains Acknowledgment Number to be used for acknowledging
- previously transmitted data.
-
- Flags
- (Bits 9-12) Must be set to zero (0).
-
- Ver
- (Bits 13-15) Must contain 1 (enhanced GRE).
-
- Protocol Type
- Set to hex 880B [8].
-
- Key
- Use of the Key field is up to the implementation. PPTP uses it as
- follows:
- Payload Length
- (High 2 octets of Key) Size of the payload, not including
- the GRE header
-
- Call ID
- (Low 2 octets) Contains the Peer's Call ID for the session
- to which this packet belongs.
-
- Sequence Number
- Contains the sequence number of the payload. Present if S
- bit (Bit 3) is one (1).
-
-
-
-
-Hamzeh, et al. Informational [Page 48]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Acknowledgment Number
- Contains the sequence number of the highest numbered GRE
- packet received by the sending peer for this user session.
- Present if A bit (Bit 8) is one (1).
-
- The payload section contains a PPP data packet without any
- media specific framing elements.
-
- The sequence numbers involved are per packet sequence numbers.
- The sequence number for each user session is set to zero at
- session startup. Each packet sent for a given user session
- which contains a payload (and has the S bit (Bit 3) set to one)
- is assigned the next consecutive sequence number for that
- session.
-
- This protocol allows acknowledgments to be carried with the
- data and makes the overall protocol more efficient, which in
- turn requires less buffering of packets.
-
-4.2. Sliding Window Protocol
-
- The sliding window protocol used on the PPTP data path is used for
- flow control by each side of the data exchange. The enhanced GRE
- protocol allows packet acknowledgments to be piggybacked on data
- packets. Acknowledgments can also be sent separately from data
- packets. Again, the main purpose of the sliding window protocol is
- for flow control--retransmissions are not performed by the tunnel
- peers.
-
-4.2.1. Initial Window Size
-
- Although each side has indicated the maximum size of its receive
- window, it is recommended that a conservative approach be taken when
- beginning to transmit data. The initial window size on the
- transmitter is set to half the maximum size the receiver requested,
- with a minimum size of one packet. The transmitter stops sending
- packets when the number of packets awaiting acknowledgment is equal
- to the current window size. As the receiver successfully digests
- each window, the window size on the transmitter is bumped up by one
- packet until the maximum is reached. This method prevents a system
- from flooding an already congested network because no history has
- been established.
-
-4.2.2. Closing the Window
-
- When a time-out does occur on a packet, the sender adjusts the size
- of the transmit window down to one half its value when it failed.
- Fractions are rounded up, and the minimum window size is one.
-
-
-
-Hamzeh, et al. Informational [Page 49]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-4.2.3. Opening the Window
-
- With every successful transmission of a window's worth of packets
- without a time-out, the transmit window size is increased by one
- packet until it reaches the maximum window size that was sent by the
- other side when the call was connected. As stated earlier, no
- retransmission is done on a time-out. After a time-out, the
- transmission resumes with the window starting at one half the size of
- the transmit window when the time-out occurred and adjusting upward
- by one each time the transmit window is filled with packets that are
- all acknowledged without time-outs.
-
-4.2.4. Window Overflow
-
- When a receiver's window overflows with too many incoming packets,
- excess packets are thrown away. This situation should not arise if
- the sliding window procedures are being properly followed by the
- transmitter and receiver. It is assumed that, on the transmit side,
- packets are buffered for transmission and are no longer accepted from
- the packet source when the transmit buffer fills.
-
-4.2.5. Multi-packet Acknowledgment
-
- One feature of the PPTP sliding window protocol is that it allows the
- acknowledgment of multiple packets with a single acknowledgment. All
- outstanding packets with a sequence number lower or equal to the
- acknowledgment number are considered acknowledged. Time-out
- calculations are performed using the time the packet corresponding to
- the highest sequence number being acknowledged was transmitted.
-
- Adaptive time-out calculations are only performed when an
- Acknowledgment is received. When multi-packet acknowledgments are
- used, the overhead of the adaptive time-out algorithm is reduced. The
- PAC is not required to transmit multi-packet acknowledgments; it can
- instead acknowledge each packet individually as it is delivered to
- the PPP client.
-
-4.3. Out-of-sequence Packets
-
- Occasionally packets lose their sequencing across a complicated
- internetwork. Say, for example that a PNS sends packets 0 to 5 to a
- PAC. Because of rerouting in the internetwork, packet 4 arrives at
- the PAC before packet 3. The PAC acknowledges packet 4, and may
- assume packet 3 is lost. This acknowledgment grants window credit
- beyond packet 4.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 50]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- When the PAC does receive packet 3, it MUST not attempt to transmit
- it to the corresponding PPP client. To do so could cause problems,
- as proper PPP protocol operation is premised upon receiving packets
- in sequence. PPP does properly deal with the loss of packets, but
- not with reordering so out of sequence packets between the PNS and
- PAC MUST be silently discarded, or they may be reordered by the
- receiver. When packet 5 comes in, it is acknowledged by the PAC
- since it has a higher sequence number than 4, which was the last
- highest packet acknowledged by the PAC. Packets with duplicate
- sequence numbers should never occur since the PAC and PNS never
- retransmit GRE packets. A robust implementation will silently
- discard duplicate GRE packets, should it receive any.
-
-4.4. Acknowledgment Time-Outs
-
- PPTP uses sliding windows and time-outs to provide both user session
- flow-control across the internetwork and to perform efficient data
- buffering to keep the PAC-PNS data channels full without causing
- receive buffer overflow. PPTP requires that a time-out be used to
- recover from dropped data or acknowledgment packets. The exact
- implementation of the time-out is vendor-specific. It is suggested
- that an adaptive time-out be implemented with backoff for congestion
- control. The time-out mechanism proposed here has the following
- properties:
-
- Independent time-outs for each session. A device (PAC or PNS) will
- have to maintain and calculate time-outs for every active session.
-
- An administrator-adjustable maximum time-out, MaxTimeOut, unique
- to each device.
-
- An adaptive time-out mechanism that compensates for changing
- throughput. To reduce packet processing overhead, vendors may
- choose not to recompute the adaptive time-out for every received
- acknowledgment. The result of this overhead reduction is that the
- time-out will not respond as quickly to rapid network changes.
-
- Timer backoff on time-out to reduce congestion. The backed-off
- timer value is limited by the configurable maximum time-out value.
- Timer backoff is done every time an acknowledgment time-out
- occurs.
-
- In general, this mechanism has the desirable behavior of quickly
- backing off upon a time-out and of slowly decreasing the time-out
- value as packets are delivered without time-outs.
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 51]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Some definitions:
-
- Packet Processing Delay (PPD) is the amount of time required for
- each side to process the maximum amount of data buffered in their
- receive packet sliding window. The PPD is the value exchanged
- between the PAC and PNS when a call is established. For the PNS,
- this number should be small. For a PAC making modem connections,
- this number could be significant.
-
- Sample is the actual amount of time incurred receiving an
- acknowledgment for a packet. The Sample is measured, not
- calculated.
-
- Round-Trip Time (RTT) is the estimated round-trip time for an
- Acknowledgment to be received for a given transmitted packet. When
- the network link is a local network, this delay will be minimal
- (if not zero). When the network link is the Internet, this delay
- could be substantial and vary widely. RTT is adaptive: it will
- adjust to include the PPD and whatever shifting network delays
- contribute to the time between a packet being transmitted and
- receiving its acknowledgment.
-
- Adaptive Time-Out (ATO) is the time that must elapse before an
- acknowledgment is considered lost. After a time-out, the sliding
- window is partially closed and the ATO is backed off.
-
- The Packet Processing Delay (PPD) parameter is a 16-bit word
- exchanged during the Call Control phase that represents tenths of a
- second (64 means 6.4 seconds). The protocol only specifies that the
- parameter is exchanged, it does not specify how it is calculated. The
- way values for PPD are calculated is implementation-dependent and
- need not be variable (static time-outs are allowed). The PPD must be
- exchanged in the call connect sequences, even if it remains constant
- in an implementation. One possible way to calculate the PPD is:
-
- PPD' = ((PPP_MAX_DATA_MTU - Header) * WindowSize * 8) / ConnectRate
- PPD = PPD' + PACFudge
-
- Header is the total size of the IP and GRE headers, which is 36. The
- MTU is the overall MTU for the internetwork link between the PAC and
- PNS. WindowSize represents the number of packets in the sliding
- window, and is implementation-dependent. The latency of the
- internetwork could be used to pick a window size sufficient to keep
- the current session's pipe full. The constant 8 converts octets to
- bits (assuming ConnectRate is in bits per second). If ConnectRate is
- in bytes per second, omit the 8. PACFudge is not required but can be
- used to take overall processing overhead of the PAC into account.
-
-
-
-
-Hamzeh, et al. Informational [Page 52]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- The value of PPD is used to seed the adaptive algorithm with the
- initial RTT[n-1] value.
-
-4.4.1. Calculating Adaptive Acknowledgment Time-Out
-
- We still must decide how much time to allow for acknowledgments to
- return. If the time-out is set too high, we may wait an unnecessarily
- long time for dropped packets. If the time-out is too short, we may
- time out just before the acknowledgment arrives. The acknowledgment
- time-out should also be reasonable and responsive to changing network
- conditions.
-
- The suggested adaptive algorithm detailed below is based on the TCP
- 1989 implementation and is explained in [11]. 'n' means this
- iteration of the calculation, and 'n-1' refers to values from the
- last calculation.
-
- DIFF[n] = SAMPLE[n] - RTT[n-1]
- DEV[n] = DEV[n-1] + (beta * (|DIFF[n]| - DEV[n-1]))
- RTT[n] = RTT[n-1] + (alpha * DIFF[n])
- ATO[n] = MAX (MinTimeOut, MIN (RTT[n] +
- (chi * DEV[n]), MaxTimeOut))
-
- DIFF represents the error between the last estimated round-trip
- time and the measured time. DIFF is calculated on each iteration.
-
- DEV is the estimated mean deviation. This approximates the
- standard deviation. DEV is calculated on each iteration and
- stored for use in the next iteration. Initially, it is set to 0.
-
- RTT is the estimated round-trip time of an average packet. RTT is
- ycalculated on each iteration and stored for use in the next
- iteration. Initially, it is set to PPD.
-
- ATO is the adaptive time-out for the next transmitted packet. ATO
- is calculated on each iteration. Its value is limited, by the MIN
- function, to be a maximum of the configured MaxTimeOut value.
-
- Alpha is the gain for the average and is typically 1/8 (0.125).
-
- Beta is the gain for the deviation and is typically 1/4 (0.250).
-
- Chi is the gain for the time-out and is typically set to 4.
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 53]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- To eliminate division operations for fractional gain elements, the
- entire set of equations can be scaled. With the suggested gain
- constants, they should be scaled by 8 to eliminate all division. To
- simplify calculations, all gain values are kept to powers of two so
- that shift operations can be used in place of multiplication or
- division.
-
-4.4.2. Congestion Control: Adjusting for Time-Out
-
- This section describes how the calculation of ATO is modified in the
- case where a time-out does occur. When a time-out occurs, the time-
- out value should be adjusted rapidly upward. Although the GRE
- packets are not retransmitted when a time-out occurs, the time-out
- should be adjusted up toward a maximum limit. To compensate for
- shifting internetwork time delays, a strategy must be employed to
- increase the time-out when it expires (notice that in addition to
- increasing the time-out, we are also shrinking the size of the window
- as described in the next section). For an interval in which a time-
- out occurs, the new
- ATO is calculated as:
-
- RTT[n] = delta * RTT[n-1]
- DEV[n] = DEV[n-1]
- ATO[n] = MAX (MinTimeOut, MIN (RTT[n] +
- (chi * DEV[n]), MaxTimeOut))
-
- In this calculation of ATO, only the two values that both contribute
- to ATO and are stored for the next iteration are calculated. RTT is
- scaled by delta, and DEV is unmodified. DIFF is not carried forward
- and is not used in this scenario. A value of 2 for Delta, the time-
- out gain factor for RTT, is suggested.
-
-5. Security Considerations
-
- The security of user data passed over the tunneled PPP connection is
- addressed by PPP, as is authentication of the PPP peers.
-
- Because the PPTP control channel messages are neither authenticated
- nor integrity protected, it might be possible for an attacker to
- hijack the underlying TCP connection. It is also possible to
- manufacture false control channel messages and alter genuine messages
- in transit without detection.
-
- The GRE packets forming the tunnel itself are not cryptographically
- protected. Because the PPP negotiations are carried out over the
- tunnel, it may be possible for an attacker to eavesdrop on and modify
- those negotiations.
-
-
-
-
-Hamzeh, et al. Informational [Page 54]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
- Unless the PPP payload data is cryptographically protected, it can be
- captured and read or modified.
-
-6. Authors' Addresses
-
- Kory Hamzeh
- Ascend Communications
- 1275 Harbor Bay Parkway
- Alameda, CA 94502
-
- EMail: kory@ascend.com
-
-
- Gurdeep Singh Pall
- Microsoft Corporation
- Redmond, WA
-
- EMail: gurdeep@microsoft.com
-
-
- William Verthein
- U.S. Robotics/3Com
-
-
- Jeff Taarud
- Copper Mountain Networks
-
-
- W. Andrew Little
- ECI Telematics
-
-
- Glen Zorn
- Microsoft Corporation
- Redmond, WA
-
- EMail: glennz@microsoft.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 55]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-7. References
-
- [1] Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing
- Encapsulation (GRE)", RFC 1701, October 1994.
-
- [2] Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing
- Encapsulation (GRE) over IPv4 Networks", RFC 1702, October 1994.
-
- [3] Lloyd, B. and W. Simpson, "PPP Authentication Protocols", RFC
- 1334, October 1992.
-
- [4] Postel, J., "Transmission Control Protocol", STD 7, RFC 793,
- September 1981.
-
- [5] Postel, J., "User Data Protocol", STD 6, RFC 768, August 1980.
-
- [6] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
- October 1994. See also: http://www.iana.org/numbers.html
-
- [7] Simpson, W., editor, "The Point-to-Point Protocol (PPP)", STD
- 51, RFC 1661, July 1994.
-
- [8] Ethertype for PPP, Reserved with Xerox Corporation.
-
- [9] Simpson, W., "PPP Challenge Handshake Authentication Protocol
- (CHAP)", RFC 1994, August 1996.
-
- [10] Blunk, L. and J Vollbrecht, "PPP Extensible Authentication
- Protocol (EAP)", RFC 2284, March 1998.
-
- [11] Stevens, R., "TCP/IP Illustrated, Volume 1", p. 300, Addison-
- Wesley, 1994.
-
- [12] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 56]
-
-RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
-
-
-8. Full Copyright Statement
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al. Informational [Page 57]
-