2.2.3 SSTP Data Packet

The SSTP data packet is a type of SSTP packet that is used by both the SSTP client and SSTP server to send a higher-layer payload (that is, a PPP frame) to each other. The following diagram specifies the format that MUST be used for the SSTP data packet. For more information, see [RFC1661].

The fields of the structure MUST be transmitted as bytes from left to right.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Version

Reserved

C

LengthPacket

Data (variable)

...

Version (1 byte): An 8-bit (1-byte) field that is used to communicate and negotiate the version of SSTP being used. The upper 4 bits are the MAJOR version, which MUST be 0x1, and the lower 4 bits are the MINOR version, which MUST be set to 0x0. This means that the 8-bit value of the Version field MUST be 0x10 and corresponds to Version 1.0.

Reserved (7 bits): This 7-bit field is reserved for future use. MUST be set to zero when sent and MUST be ignored on receipt.

C (1 bit): A 1-bit field that is used to indicate whether the packet is an SSTP control packet or an SSTP data packet. The value MUST be set to zero to indicate a data packet that carries higher-layer payloads.

LengthPacket (2 bytes): A 16-bit unsigned integer in network byte order that packs data for two fields, configured in the following format.

0

1

2

3

4

5

6

7

8

9

1

0

1

2

3

4

5

R

Length

R (4 bits): This 4-bit field is reserved for future use. MUST be set to zero when sent and MUST be ignored on receipt.

Length (12 bits): A 12-bit unsigned integer in network byte order that MUST specify the length, in bytes, of the entire SSTP packet, including the 4-byte SSTP header (that is, Version, 7-bit Reserved field, 1-bit C field, 4-bit R field, and 12-bit Length field).

Data (variable): A variable-length field that contains the higher-layer payload. SSTP data packets carry encapsulated protocol frames as payload. The protocol encapsulated in the Data field is determined from previously received Encapsulated Protocol ID Attribute (section 2.2.5). SSTP currently supports only PPP [RFC1661] as the encapsulated protocol (see section 2.2.5 for details).  The length of this field is equal to the value of the field Length, minus 4.