首页 > 技术文章 > 「L2TP」- Layer 2 Tunneling Protocol @20210131

k4nz 2021-01-31 17:49 原文

!!!以下内容基本上是维基百科「Layer 2 Tunneling Protocol」的机翻,加上一点微调。

在计算机网络中,「第2层隧道协议(L2TP)」是一种「隧道协议」,用于支持「VPN」或作为ISP提供服务的一部分。它本身不提供任何加密或保密,相反,它依赖于它在隧道内传递的「加密协议」来提供隐私。

历史

在1999年,作为提议的标准「RFC 2661」发布,L2TP主要源于用于点对点通信的两种较旧的隧道协议:思科的「第2层转发协议(L2F)」和微软的「点对点隧道协议(PPTP)」。

在2005年,该协议的新版本L2TPv3出现,作为提议的标准「RFC 3931」。L2TPv3提供额外的安全功能,改进封装,以及通过「IP网络」携带「数据链路」的能力,而不仅仅是携带「点对点协议(PPP)」 (例如:帧中继,以太网,ATM等)。

简述

使用「UDP数据报」发送整个「L2TP数据包」(包括「有效负载」和「L2TP报头」)。通过UDP传输的一个优点是它避免了“TCP崩溃问题”。通常在「L2TP隧道」内承载PPP会话。 L2TP本身不提供机密性或强身份验证。IPsec通常用于通过提供机密性、身份验证、完整性,来保护L2TP数据包。这两种协议的组合通常称为L2TP/IPsec(下面讨论)。

「L2TP隧道」的两个端点称为「LAC(L2TP Access Concentrator)」和「LNS(L2TP Network Server)」。 「LNS」等待新的隧道。建立隧道后,对等体之间的网络流量是双向的。为了对网络有用,然后通过「L2TP隧道」来运行更高级别的协议。为了促进这一点,在隧道内,为每个更高级别的协议(例如PPP)建立「L2TP会话」(或称为“call”)。「LAC」或「LNS」可以发起会话。每个会话的流量由L2TP隔离,因此可以在单个隧道中设置多个虚拟网络。在实施L2TP时应考虑「MTU」。

在「L2TP隧道」内交换的数据包被分类为「控制包」和「数据包」。「L2TP」为「控制包」提供可靠性功能,但「数据包」没有可靠性。如果需要,则可靠性必须由「L2TP隧道」的每个会话中运行的「嵌套协议」来提供。

「L2TP」允许创建「虚拟专用拨号网络(VPDN)」,通过使用共享基础设施(可以是“Internet”或“服务提供商的网络”)将远程客户端连接到其公司网络。

隧道模型

「L2TP隧道」可以延伸到整个PPP会话,也可以只延伸到两段会话的一个段。 这可以用四种不同的隧道模型来表示,即:

 

  • 自愿隧道
  • 强制隧道 - 进入拨号(接收)
  • 强制隧道 - 远程拨号(发送)
  • L2TP多跳连接

 

后面会进行介绍。

关于L2TP数据包结构

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数据包交换

在建立L2TP连接时,在「服务器」和「客户端」之间交换许多「控制包」,以为每个方向建立「隧道」和「会话」。 「一个对等体」请求「另一个对等体」通过这些「控制包」分配特定的「隧道」和「会话ID」,然后使用此「隧道」和「会话ID」,「数据包」同「压缩的PPP帧」作为有效负载进行交换。

「LAC」和「LNS」之间交换的L2TP「控制包」列表,用于握手(在「自愿隧道」方法中建立「隧道」和「会话」之前):

关于TCP崩溃问题

Why TCP Over TCP Is A Bad Idea

Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency

杂项内容

Why PPTP, L2TP, PPPOE are in OSI Layer2?
What can L2TP do for your network?

软件实现:「Wikipedia/Layer 2 Tunneling Protocol/Implementations

Start-Control-Connection-Request (SCCRQ)

参考文献

WikiNotes/Layer 2 Tunneling Protocol
Wikipedia/Layer 2 Tunneling Protocol
CISCO/Understanding VPDN
PPP Session Establishment


推荐阅读