2

A PPTP connection transports payload data by wrapping it into PPP and then sending it over a previously negotiated Enhanced GRE link.

As per PPTP RFC, the following holds true:

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.

- Section 4. Tunnel Protocol Operation

So nothing of the PPP data must be escaped and all characters are treated as ordinary characters and not control characters.

However PPTP also defines a Set-Link-Info message in section 2.15. Set-Link-Info and the only purpose of this message is to set the ACCMs, which stands for Asynchronous Control Character Map. It also defines, that unless this message is sent, the other side shall assume 0xFFFFFFFF as default.

The only purpose of the ACCM is to tell the other side which control characters must be escaped but section 4 forbids escaping of control characters, so what purpose has setting an ACCM other than zero? And what behavior is expected if the default value says all characters below ASCII code 32 must be escaped, yet escaping is forbidden?

All implementations I found simply ignore the ACCM entirely and never escape anything, yet this makes the Set-Link-Info message completely pointless as it will never have an effect. Can someone shine a light on this contradiction?

Relevant RFCs:

6
  • I don't have an answer for this, but it's worth noting that many protocols incorporate features that the author(s) think could be useful, but prove latter to not be needed and are never used (or reserve fields / space for future usage and are also not used).
    – JFL
    Dec 9 '20 at 11:48
  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can post and accept your own answer.
    – Ron Maupin
    Dec 31 '20 at 19:43
  • @RonMaupin There is only one answer and I already commented it, didn't I?
    – Mecki
    Jan 7 at 21:41
  • We are doing the year-end cleanup, and pasting the comment in on any question that has unaccepted answers. I do not really look at the question or answer because I have too many to go through. Also, you may have discovered the answer on your own, and you could post and accept your own answer.
    – Ron Maupin
    Jan 7 at 21:53
  • @RonMaupin If you just copy and paste this, without even looking at the question or the answers, you should mention that in the pasted comment, just like one would mention if a comment was auto generated by the server.
    – Mecki
    Jan 7 at 22:04
0

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.

That means that PPTP itself doesn't use any control characters within the transported PPP packets. All signaling is taken over to PPTP.

ACCM is used to enable transparent transport of character sequences resembling control characters for the underlying asynchronous link. These must be escaped or the link breaks (think of the Hayes ~+++~AT sequence).

1
  • I know what ACCM is and what it is good for but where would ACCM be applied at a PPTP link? I tried setting different values for ACCM but no matter what value I set, the other side sends everything unescaped and expects everything to be sent unescaped. Tried with 4 different VPN hardware gateways and 3 different PPTP software implementations. Also PPP negotiates the async control character map itself, also over a PPTP GRE link. It requires no ACCM support on link level, the link level will already get escaped characters if required.
    – Mecki
    Dec 21 '20 at 17:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.