「L2TP」- 报文格式

AVP(Attribute-Value Pair)

UDP Port 1701

报文封装

仅在 LAC 与 LNS 间的报文才会进行 L2TP 封装;

消息类型

在 LAC 和 LNS 间(即 L2TP Tunnel 内)交换的数据包被分类为:
1)控制包(Control Data):用于 Tunnel 和 Session 的建立、维护、拆除;
2)数据包(Traffic Data):用于封装 PPP 数据帧并在隧道上传输;

控制消息

1)在控制消息的传输过程中,使用消息丢失重传和定时检测隧道连通性等机制来保证控制消息传输的可靠性,支持对控制消息的流量控制和拥塞控制;
2)控制消息承载在 L2TP 控制通道上,控制通道实现控制消息的可靠传输,将控制消息封装在 L2TP 报头内,再经过 IP 网络传输;

数据消息

1)不可靠的传输,不重传丢失的数据报文,不支持对数据消息的流量控制和拥塞控制。可靠性必须由隧道的嵌套协议来提供;
2)数据消息携带 PPP 帧承载在不可靠的数据通道上,对 PPP 帧进行 L2TP 封装,再经过 IP Network 传输;

L2TP Header

Flags and Version Info:指示数据 / 控制分组的控制标志、长度、序列、偏移字段的存在

Length(optional):消息的总长度(以字节为单位),仅在设置 length 标志时出现

Tunnel ID:「控制连接」的「标识符」

Session ID:「隧道内会话」的「标识符」;

Ns (optional):该「数据包」或「控制包」的序列号,从零开始,对于发送的每个消息递增 1(模数 216)。仅在sequence标志设置时出现;

Nr (optional):要接收的预期消息的序列号。Nr 被设置为接收的上一个有序消息的 Ns 加一(模 216)。在「数据包」中,Nr 是保留的,如果存在(如 S 位所示),必须在接收时被忽略,因为 Nr 主要用于「控制包」;

Offset Size (optional):指定「有效负载数据」在「L2TP 标头」之后的位置。如果存在偏移字段,则「L2TP 标头」在偏移填充的最后一个字节之后结束。如果设置了offset标志,则该字段存在;

Offset Pad (optional):可变长度,由偏移大小指定。该字段的内容未定义;

Payload data:可变长度(最大有效负载大小 = UDP 数据包的最大大小(65507)- L2TP 报头的大小)

L2TP Control Data

WIP

在 Host Name AVP 中,能够看到 Tunnel Name(隧道名)