summaryrefslogtreecommitdiff
path: root/doc/pptp-draft.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/pptp-draft.txt')
-rw-r--r--doc/pptp-draft.txt3472
1 files changed, 0 insertions, 3472 deletions
diff --git a/doc/pptp-draft.txt b/doc/pptp-draft.txt
deleted file mode 100644
index f58701b3..00000000
--- a/doc/pptp-draft.txt
+++ /dev/null
@@ -1,3472 +0,0 @@
-
-Internet Draft Kory Hamzeh
- Ascend Communications
- Gurdeep Singh Pall
- Microsoft Corporation
- William Verthein
- U.S. Robotics/3Com
- Jeff Taarud
- Copper Mountain Networks
- W. Andrew Little
- ECI Telematics
-July 1997
-Expire in six months
-
-
- Point-to-Point Tunneling Protocol--PPTP
- draft-ietf-pppext-pptp-02.txt
-
-Status of this Memo
-
- This document is an Internet-Draft. Internet-Drafts are working
- documents of the Internet Engineering Task Force (IETF), its areas,
- and its working groups. Note that other groups may also distribute
- working documents as Internet-Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six months
- and may be updated, replaced, or obsoleted by other documents at any
- time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- To learn the current status of any Internet-Draft, please check the
- "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
- Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
- munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
- ftp.isi.edu (US West Coast).
-
-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
-
-
-
-Hamzeh, et al [Page 1]
-
-Internet Draft PPTP July 1997
-
-
- 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-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.
-
-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.
-
- 2) Logical termination of a Point-to-Point-Protocol (PPP) Link
- Control Protocol (LCP) session.
-
- 3) Participation in PPP authentication protocols [3].
-
- 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:
-
-
-
-
-Hamzeh, et al [Page 2]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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 Appendix A.
-
-
-1.2 Terminology
-
-
-Hamzeh, et al [Page 3]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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.
-
-
-
-
-Hamzeh, et al [Page 4]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
-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
-
-
-
-Hamzeh, et al [Page 5]
-
-Internet Draft PPTP July 1997
-
-
- 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. 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 Appendix A of this
- document.
-
-1.4 Specification Language
-
- In this document, several words are used to signify the requirements
- of the specification. These words are often capitalized.
-
- MUST This word, or the adjective "required", means
- that the definition is an absolute requirement
- of the specification.
-
- MUST NOT This phrase means that the definition is an
- absolute prohibition of the specification.
-
- SHOULD This word, or the adjective "recommended",
-
-
-
-Hamzeh, et al [Page 6]
-
-Internet Draft PPTP July 1997
-
-
- means that, in some circumstances, valid
- reasons may exist to ignore this item, but the
- full implications must be understood and
- carefully weighed before choosing a different
- course. Unexpected results may result
- otherwise.
-
- MAY This word, or the adjective "optional", means
- that this item is one of an allowed set of
- alternatives. An implementation which does
- not include this option MUST be prepared to
- interoperate with another implementation which
- does include the option.
-
- silently discard 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.
-
-
-1.5 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
-
-
-
-Hamzeh, et al [Page 7]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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 3. 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.
-
-
-
-Hamzeh, et al [Page 8]
-
-Internet Draft PPTP July 1997
-
-
- The MTU for the user data packets encapsulated in GRE is 1532 octets,
- not including the IP and GRE headers.
-
-2.0 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.
-
- The TCP header is followed by the PPTP fields shown in the following:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 9]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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.5).
-
-
-
-Hamzeh, et al [Page 10]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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
-
-
-
-Hamzeh, et al [Page 11]
-
-Internet Draft PPTP July 1997
-
-
- issued by the PNS. If less than 64
- octets in length, the remainder of this
- field SHOULD be filled with octets of
- value 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 12]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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
-
-
-
-Hamzeh, et al [Page 13]
-
-Internet Draft PPTP July 1997
-
-
- 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
-
- 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.16.
-
- 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
-
-
-
-Hamzeh, et al [Page 14]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 15]
-
-Internet Draft PPTP July 1997
-
-
-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:
-
- 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.
-
-
-
-Hamzeh, et al [Page 16]
-
-Internet Draft PPTP July 1997
-
-
-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:
-
- 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.16.
-
- Reserved1 This field MUST be 0.
-
-
-
-Hamzeh, et al [Page 17]
-
-Internet Draft PPTP July 1997
-
-
-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,
- 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.
-
- Identifier A value set by the sender of the Echo-
- Request that is used to match the reply
- with the corresponding request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 18]
-
-Internet Draft PPTP July 1997
-
-
-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
-
- Error Code This field is set to 0 unless a "General
-
-
-
-Hamzeh, et al [Page 19]
-
-Internet Draft PPTP July 1997
-
-
- 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.16.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 20]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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.
-
-
-
-
-Hamzeh, et al [Page 21]
-
-Internet Draft PPTP July 1997
-
-
- Magic Cookie 0x1A2B3C4D.
-
- Control Message Type 7 for Outgoing-Call-Request.
-
- Reserved0 This field MUST be 0.
-
- 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
-
-
-
-Hamzeh, et al [Page 22]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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 appendix A 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 23]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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.
-
-
-
-
-Hamzeh, et al [Page 24]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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.16.
-
- 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.
-
-
-
-
-Hamzeh, et al [Page 25]
-
-Internet Draft PPTP July 1997
-
-
- 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 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 Appendix A
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 26]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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.
-
-
-
-Hamzeh, et al [Page 27]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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.
-
-
-
-Hamzeh, et al [Page 28]
-
-Internet Draft PPTP July 1997
-
-
- 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 [Page 29]
-
-Internet Draft PPTP July 1997
-
-
-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 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
-
-
-
-Hamzeh, et al [Page 30]
-
-Internet Draft PPTP July 1997
-
-
- in the Call ID field of the corresponding
- Incoming-Call-Request message. It is used
- by 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.16.
-
- 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. See
- Appendix A for a description of how this
- value is determined and used.
-
- Reserved1 This field MUST be 0.
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 31]
-
-Internet Draft PPTP July 1997
-
-
-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
- 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
-
-
-
-Hamzeh, et al [Page 32]
-
-Internet Draft PPTP July 1997
-
-
- 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. See
- Appendix A for a description of how this
- value is determined and used.
-
- 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 33]
-
-Internet Draft PPTP July 1997
-
-
-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 [Page 34]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- Result Code This value indicates the reason for the
- disconnect. Current valid Result Code
-
-
-
-Hamzeh, et al [Page 35]
-
-Internet Draft PPTP July 1997
-
-
- 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.16.
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 36]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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.
-
-
-
-Hamzeh, et al [Page 37]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- Time-out Errors Number of time-outs since call was
- established.
-
- Alignment Errors Number of alignment errors since call was
- established.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 38]
-
-Internet Draft PPTP July 1997
-
-
-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.
-
- 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].
-
-
-
-
-Hamzeh, et al [Page 39]
-
-Internet Draft PPTP July 1997
-
-
- 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].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 40]
-
-Internet Draft PPTP July 1997
-
-
-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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 41]
-
-Internet Draft PPTP July 1997
-
-
-3.0 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.
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 42]
-
-Internet Draft PPTP July 1997
-
-
-3.1.1 Control Connection Originator (may be PAC or PNS)
-
- TCP Open Indication
- /Send Start Control
- Connection Request +-----------------+
- +------------------------------------>| wait_ctl_reply |
- | +-----------------+
- | Collision/See (3.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 |
- +-----------------+
-
-
-
- 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.
-
-
-
-
-
-
-Hamzeh, et al [Page 43]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
-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
-
-
-
-Hamzeh, et al [Page 44]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
- 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.
-
-
-
-
-Hamzeh, et al [Page 45]
-
-Internet Draft PPTP July 1997
-
-
-3.1.3 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.
-
-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
-
-
-
-Hamzeh, et al [Page 46]
-
-Internet Draft PPTP July 1997
-
-
- 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
- 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 Outgoing-
- Call-Reply which also indicates window sizes (see Appendix B). 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.
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 47]
-
-Internet Draft PPTP July 1997
-
-
-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 Accepting
- | | +------------------------------+ | /Answer call; Send
- | | | Abort/Send Call | Call Connected
- ^ V V Disconnect Notify V
- +-----------------+ +-----------------+
- | idle |<-----------------------------| established |
- +-----------------+ Receive Clear Call Request +-----------------+
- or telco call dropped
- or local disconnect
- /Send Call Disconnect Notify
-
-
-
- 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
-
-
-
-
-Hamzeh, et al [Page 48]
-
-Internet Draft PPTP July 1997
-
-
- 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
-
-
-
- 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.
-
-
-
-
-
-Hamzeh, et al [Page 49]
-
-Internet Draft PPTP July 1997
-
-
- 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 [Page 50]
-
-Internet Draft PPTP July 1997
-
-
-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
-
-
-
-Hamzeh, et al [Page 51]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
-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
-
-
-
-Hamzeh, et al [Page 52]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
-4.0 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:
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 53]
-
-Internet Draft PPTP July 1997
-
-
-
- 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) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- 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
-
-
-
-Hamzeh, et al [Page 54]
-
-Internet Draft PPTP July 1997
-
-
- 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).
-
- 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.
-
-
-
-
-
-
-
-Hamzeh, et al [Page 55]
-
-Internet Draft PPTP July 1997
-
-
-4.3 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.4 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.
-
- 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.
-
-5.0 Security Considerations
-
- Security issues are not addressed in this document. End to end
- security is addressed by PPP. Further security considerations will be
- addressed by the next version of PPTP.
-
-
-
-
-
-
-
-Hamzeh, et al [Page 56]
-
-Internet Draft PPTP July 1997
-
-
-6.0 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
-
-7.0 References
-
- [1] Hanks, S. Li, T., Farinacci, D. Traina, P., "Generic Routing
- Encapsulation (GRE)", RFC 1701, October 1994.
-
- [2] Hanks, S. Li, T., Farinacci, D. Traina, P., "Generic Routing
- Encapsulation (GRE) over IPv4 Networks", RFC 1702, October 1994.
-
- [3] Lloyd, B. Simpson, W., "PPP Authentication Protocols", RFC 1334,
- October 1992.
-
- [4] Postel, J. B., "Transmission Control Protocol", RFC 791,
- September 1981
-
- [5] Postel, J. B., "User Data Protocol", RFC 768, August 1980.
-
- [6] Reynolds, J., Postel, J., "Assigned Numbers", RFC 1700, October,
- 1994.
-
- [7] Simpson, W., editor, "The Point-to-Point Protocol (PPP)", RFC
- 1661, July 1994.
-
- [8] Ethertype for PPP, Reserved with Xerox Corporation.
-
-
-
-
-
-Hamzeh, et al [Page 57]
-
-Internet Draft PPTP July 1997
-
-
-Appendix A. 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.
-
- 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
-
-
-
-Hamzeh, et al [Page 58]
-
-Internet Draft PPTP July 1997
-
-
- 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.
-
-
-Packet Processing Delay (PPD)
-
- The 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.
-
- The value of PPD is used to seed the adaptive algorithm with the
- initial RTT[n-1] value.
-
-Sample
-
- Sample is the actual measured time for a returned acknowledgment.
-
-Round-Trip Time (RTT)
-
- The RTT value represents an estimate of the average time it takes for
- an acknowledgment to be received after a packet is sent to the remote
-
-
-
-Hamzeh, et al [Page 59]
-
-Internet Draft PPTP July 1997
-
-
- end of the tunnel.
-
-
-A.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 Richard Steven's book TCP/IP
- Illustrated, Volume 1 (page 300). '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] = 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
- calculated 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.
-
- 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
-
-
-
-Hamzeh, et al [Page 60]
-
-Internet Draft PPTP July 1997
-
-
- division.
-
-
-A.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. A simple formula called
- Karn's Algorithm is used in TCP implementations and may be used in
- implementing the backoff timers for the PNS or the PAC. Notice that
- in addition to increasing the time-out, we are also shrinking the
- size of the window as described in the next section.
-
- Karn's timer backoff algorithm, as used in TCP, is:
-
-
- NewTIMEOUT = delta * TIMEOUT
-
- Adapted to our time-out calculations, 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] = MIN (RTT[n] + (chi * DEV[n]), MaxTimeOut)
-
- In this modified calculation of ATO, only the two values that
- contribute to ATO and that are stored for the next iteration are
- calculated. RTT is scaled by chi, 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.
-
-Appendix B. Acknowledgment Time-Out and Window Adjustment
-
-B.1 Initial Window Size
-
- Although each side has indicated the maximum size of its receive
- window, it is recommended that a slow start method be used to begin
- transmitting 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
-
-
-
-Hamzeh, et al [Page 61]
-
-Internet Draft PPTP July 1997
-
-
- congested network because no history has been established.
-
-B.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.
-
-B.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.
-
-B.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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hamzeh, et al [Page 62]
-
-