6 Appendix A: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

  • Windows 2000 operating system

  • Windows XP operating system

  • Windows Server 2003 operating system

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

  • Windows 10 operating system

  • Windows Server 2016 operating system

  • Windows Server operating system

  • Windows Server 2019 operating system

  • Windows Server 2022 operating system

  • Windows 11 operating system

  • Windows Server 2025 operating system

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 2.1: PAC listens on a specified port number for the TCP connections. By default, Windows uses port number 1723. However, the port number can be modified by changing the value in the registry at <PPTP-Registry-Location>\TcpPortNumber.

<2> Section 3.1.2: The default timer value of 60 seconds can be changed by using the registry value "<PPTP-Registry-Location>\InactivityIdleSeconds".

<3> Section 3.1.3: The Windows implementation obtains the PPTP port by reading the registry value "<PPTP-Registry-Location>\TcpPortNumber". If this registry value is not present, the PAC/PNS uses the default PPTP port 1723.

<4> Section 3.1.3: The Windows implementation reads the registry value "<PPTP-Registry-Location>\InactivityIdleSeconds" to obtain the echo timeout value. If this registry value is not present, the PAC/PNS uses an echo timeout value of 60 seconds.

<5> Section 3.1.3: As part of the initialization process, the Windows implementation reads the registry value "<PPTP-Registry-Location>\ValidateAddress" to initialize the flag that determines whether the PAC/PNS validates the received GRE packets, as specified in section 3.1.5.

<6> Section 3.1.5: The source IP address validation for received packets can be enabled for Windows using the registry key using registry value "<PPTP-Registry-Location>\ValidateAddress". If this registry value is not present or is set to 0, IP validation is not performed.

Note The <PPTP-Registry-Location> registry entry is located in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\<number> registry subkey, where <number> is a placeholder for a number between 0001 and 0020, inclusive. The subkey that contains the PPTP registry entry is the subkey that contains the DriverDesc REG_SZ entry with a populated WAN Miniport (PPTP) data value. To locate the DriverDesc REG_SZ entry, click each <number> subkey and then look for "WAN Miniport (PPTP)" (without quotes) in the Data column.

<7> Section 3.1.5.8: The Windows implementation maintains an ordered queue of packets based on the sequence number. Any received packet is inserted into this ordered queue. A worker thread, which gets triggered based on the presence of packets in the queue, performs the task of removing the packets from the ordered queue and indicating them to the higher layer.

<8> Section 3.2.5.2: The PAC sends an Outgoing-Call-Reply message to PNS in response to the receipt of an Outgoing-Call-Request message.

The PAC sends the following attributes in this message:

Result Code = 1 (Connected)

Packet Recv. Window Size = 16384

Packet Processing Delay = 0

Physical Channel ID = 0

<9> Section 3.2.5.2: In the Windows implementation of this profile, the PAC sets the value of the Packet Recv. Window Size field to 16384 and the Packet Recv. Window Size field is ignored by the PNS.

<10> Section 3.3.5.2: In the Windows implementation, the PNS sends the following attributes with the Outgoing-Call-Request message.

Call Serial Number = An integer value starting at 1 and incremented for every Outgoing-Call-Request message sent. The PAC overrides the Call Serial Number that was sent by the PNS in the Outgoing-Call-Request message.

Minimum bits per second = 300

Maximum bits per second = 100000000

Bearer type = 3 (Call can be placed on any type of channel)

Framing Type = 3 (Call can use either type of framing)

Packet Recv. Window Size = 64

Packet Processing Delay = 0

SubAddress = SubAddress has the Correlation ID (a GUID). The Correlation ID is randomly generated once per session. It is a 16-byte long value. The remaining 48 bytes are filled by zeros. The peer simply logs the Correlation ID specified in this field and does not use it with any packet exchange for that session.

<11> Section 3.3.5.2: In the Windows implementation of this profile, the PNS sets the value of the Packet Recv. Window Size field to 64 and the field is ignored by the PAC.

<12> Section 3.3.5.3: An Incoming-Call-Reply message sent by the Windows PNS in response to a Incoming-Call-Request message received from the PAC contains the following attributes:

Packet Recv. Window Size = 16384

Packet transmit delay = 0

If the PNS does not have the resources to handle the new incoming connection request, it replies with Result Code = 2 (General Error - The Incoming Call should not be established due to the reason indicated in Error Code.) and Error Code = 4. For all other internal error conditions, the PNS does not send the Incoming-Call-Reply message to the PAC and the PAC/PNS remains in the idle state.

<13> Section 3.3.5.3: The Windows PAC silently discards the Incoming-Call-Reply message received from a PNS, since it never sends the Incoming-Call-Request message to the PNS as specified in section 3.2.5.3. The silent discard operation is not normal protocol behavior; rather, it is exception handling for the specific case when a reply message is received for a request message that is not implemented by this protocol profile.

<14> Section 3.3.5.3: In the Windows implementation of this profile, the PNS sets the value of the Packet Recv. Window Size field to 16384.