用于用户接入的 L2TP 概述
用于用户接入的 L2TP 概述
第 2 层隧道协议 (L2TP) 是一种客户端-服务器协议,允许点对点协议 (PPP) 在网络上建立隧道。L2TP 封装第 2 层数据包(如 PPP),以便通过网络传输。在接入设备上配置的 L2TP 接入集中器 (LAC) 接收来自远程客户端的数据包,并将其转发到远程网络上的 L2TP 网络服务器 (LNS)。LNS 充当 LAC 从远程客户端通过隧道传输的 PPP 会话的逻辑端点。 图 1 显示了一个简单的 L2TP 拓扑。
L2TP 将接入技术(如电缆或 xDSL)的终止与 PPP 的终止和随后的网络访问分开。这种分离使公共 ISP 能够将其接入技术外包给具有竞争力的本地交换运营商 (CLEC)。L2TP 为 ISP 提供 VPN 服务的能力;私营企业可以减少或避免对远程工作者访问技术的投资。
您可以将路由器配置为在 PPP 直通模式下充当 LAC,在该模式下,LAC 从远程客户端接收数据包,然后在第 2 层将这些数据包直接转发到 LNS。PPP 会话在 LNS 上终止。此 LAC 实施仅支持动态或静态逻辑接口上的以太网点对点协议 (PPPoE) 订阅者。 图 2 显示了 L2TP 直通连接的协议层堆叠。
在 MX 系列路由器上,LAC 和 LNS 功能仅在 MPC 上受支持;它们在任何服务 PIC 或 MS-DPC 上均不受支持。有关 MPC 对 L2TP 的支持的详细信息,请参阅 MX 系列接口模块参考
某些 M 系列路由器支持服务 PIC 上的 LNS 功能。有关 M 系列路由器上的 L2TP 实施的详细信息,请参阅 L2TP 服务配置概述。
LAC 基于 AAA 认证参数动态创建隧道,并通过 IP/用户数据报协议 (UDP) 将 L2TP 数据包传输到 LNS。流量在L2TP session中传输;隧道是一个或多个会话的聚合。您还可以预置域映射,供 AAA 用于确定是隧道还是终止 LAC 上的 PPPoE 订阅者。通过隧道连接到 LNS 的每个 PPP 用户与 L2TP 会话之间存在一对一映射。
当 LNS 是 MX 系列路由器时,MPC 上面向 LAC 的对等接口会提供用于在隧道端点之间交换 IP 数据包的 IP 地址;路由引擎维护 L2TP 隧道。数据包转发引擎托管一个或多个内联服务 (si
) 接口。这些接口的功能类似于虚拟物理接口,可将 L2TP 会话 锚定 在 LNS 上。该 si
接口支持 L2TP 服务,无需特殊服务 PIC。最后,另一个接口用于将用户数据传输到互联网和从互联网传输用户数据。
隧道的特征可以源自您配置的隧道配置文件,也可以源自可从 LAC 访问的 AAA 服务器的 RADIUS 隧道属性和供应商特定属性 (VSA)。您可以在域映射中包含隧道配置文件,这会在进行 RADIUS 身份验证之前应用隧道配置文件。您可以使用 RADIUS 标准属性和 VSA 覆盖域映射中隧道配置文件配置的任何或所有特征。或者,当在 RADIUS 登录中指定 RADIUS 隧道组 VSA [26-64] 时,RADIUS 本身可以应用隧道配置文件。
GRE 隧道不支持 L2TP。
服务提供商 AAA 服务器(可从 LNS 访问)上的订阅者配置文件中的虚拟路由器 VSA [26-1] 确定在 LNS 上启动 L2TP 会话的路由实例。如果此 VSA 不存在,订阅者会话将在与隧道相同的路由实例中启动,因为只能从隧道在 LNS 上终止的路由实例访问 AAA 服务器。
此行为不同于 DHCP 和非隧道 PPPoE 订阅者的行为,后者在没有虚拟路由器 VSA 的情况下出现在默认路由实例中。对于 L2TP 订阅者,如果希望订阅者会话在与隧道路由实例不同的路由实例中启动,则必须将此 VSA 包含在订阅者配置文件中。
从 Junos OS 17.4R1 版开始,LNS 在向 RADIUS 服务器发送访问请求消息时包含以下 RADIUS 属性:
隧道型 (64)
隧道中型 (65)
隧道客户端端点 (66)
隧道服务器端点 (67)
隧道连接 (68)
隧道分配 ID (82)
隧道客户端身份验证 ID (90)
隧道服务器身份验证 ID (91)
在早期版本中,LNS 仅将这些属性包含在发送到 RADIUS 服务器的记帐记录中。在访问请求消息中,它们可用于在 RADIUS 服务器上关联从 LAC 到 LNS 的会话。
LAC 支持 RADIUS 启动的镜像,基于某些 RADIUS VSA 创建安全策略,并使用 RADIUS 属性来识别要镜像其流量的订阅者。(MX 系列路由器上配置的 LNS 不支持此功能。
LAC 和 LNS 支持统一的 ISSU。启动升级后,LAC 将完成正在进行的任何 L2TP 协商,但在升级完成之前拒绝任何新的协商。升级期间不会建立新的隧道或会话。订阅者注销在升级期间记录,并在升级完成后完成。
L2TP 术语
表 1 描述了 L2TP 的基本术语。
术语 |
描述 |
---|---|
Avp |
属性值对 (AVP) - 唯一属性(由整数表示)和包含由属性标识的实际值的值的组合。 |
叫 |
远程系统与 LAC 之间的连接(或尝试的连接)。 |
Lac |
L2TP 访问集中器 (LAC) — 充当 L2TP 隧道端点的一端并且是 LNS 对等方的节点。LAC 位于 LNS 和远程系统之间,并相互转发数据包。 |
LNS |
L2TP 网络服务器 (LNS) — 充当 L2TP 隧道端点的一端且与 LAC 对等的节点。LNS 是 PPP 连接的逻辑端点,由 LAC 从远程系统通过隧道传输。 |
同行 |
在 L2TP 环境中,LAC 或 LNS。LAC 的对等方是 LNS,反之亦然。 |
代理身份验证 |
由 LAC 代表 LNS 执行的 PPP 预身份验证。代理数据由 LAC 发送到 LNS,其中包含身份验证类型、身份验证名称和身份验证质询等属性。LNS 使用身份验证结果进行响应。 |
代理 LCP |
由 LAC 代表 LNS 执行的链路控制协议 (LCP) 协商。代理由 LAC 发送到 LNS,其中包含上次从客户端发送和接收的配置属性等属性。 |
远程系统 |
连接到远程访问网络的终端系统或路由器,它是呼叫的发起方或接收方。 |
会话 |
在远程系统和 LNS 之间建立端到端 PPP 连接时,在 LAC 和 LNS 之间创建的逻辑连接。
注意:
已建立的 L2TP 会话与其关联的 PPP 连接之间存在一对一的关系。 |
隧道 |
LAC-LNS 对之间的连接,由一个控制连接和 0 个或多个 L2TP 会话组成。 |
L2TP 实现
L2TP 在四个层面上实现:
源 — 充当 LAC 的本地路由器。
目标 — 充当 LNS 的远程路由器。
隧道 — LAC 和 LNS 之间的直接路径。
会话 — 隧道中的 PPP 连接。
当路由器建立了目标、隧道和会话后,您可以控制 L2TP 流量。对目标进行更改会影响到该目标的所有隧道和会话;对隧道进行更改会影响该隧道中的所有会话。例如,关闭目标会关闭到该目标的所有隧道和会话。
LAC 上的事件顺序
充当 LAC 的路由器动态创建目标、隧道和会话,如下所示:
客户端启动与路由器的 PPP 连接。
路由器和客户端交换链路控制协议 (LCP) 数据包。LAC 代表 LNS 进行谈判;这称为 代理 LCP。
LAC 代表 LNS 对客户端进行身份验证;这称为 代理身份验证。通过使用与域名或 RADIUS 身份验证相关的本地数据库,路由器决定是终止 PPP 连接还是通过隧道传输 PPP 连接。
如果路由器发现它应该通过隧道传输会话,它将执行以下操作:
设置新目标或选择现有目标。
设置新隧道或选择现有隧道。
在隧道配置文件或 RADIUS 属性隧道密码 [69] 中配置共享密钥时(取决于用于配置隧道的方法),密钥用于在建立阶段对隧道进行身份验证。LAC 在发送到 LNS 的 SCCRQ 消息中包含质询 AVP。LNS 在 SCCRP 消息中返回质询响应 AVP。如果来自 LNS 的响应与 LAC 预期的值不匹配,则隧道身份验证将失败,并且不会建立隧道。
打开一个新会话。
路由器将 LCP 协商和身份验证的结果转发到 LNS。
客户端和 LNS 之间现在存在 PPP 连接。
如果 L2TP 报头中可变长度的可选偏移焊盘字段的大小过大,路由器将丢弃收到的数据包。路由器始终支持偏移焊盘字段最多为 16 字节的数据包,并且可能支持更大的偏移焊盘字段,具体取决于标头中的其他信息。此限制可能是(尽管不太可能)过度丢弃 L2TP 数据包的原因。
当 LAC 终止 PPP 会话时,它会生成 PPP 断开连接原因,并在向 LNS 发送呼叫-断开连接-通知 (CDN) 消息时将此信息包含在 PPP 断开连接原因代码 (AVP 46) 中。代码值为 0,表示没有可用信息的全局错误。
LNS 上的事件序列
可以按如下方式设置充当 LNS 的路由器:
LAC 启动一个隧道,其中路由器充当 LNS。
LNS 验证具有此 LAC 的隧道是否有效:目标已配置、主机名和隧道密码是否正确。
LNS 使用 LAC 完成隧道设置。
LAC 设置会话并向 LNS 发起会话请求。
LNS 使用静态接口或创建动态接口来锚定 PPP 会话。
如果它们已启用且存在,LNS 将接受代理 LCP 和代理身份验证数据,并将其传递给 PPP。
PPP 处理代理 LCP(如果存在),如果代理 LCP 可接受,则将 LNS 上的 LCP 置于打开状态,而无需重新协商 LCP。
PPP 处理代理身份验证数据(如果存在),并将数据传递给 AAA 进行验证。(如果数据不存在,PPP 将从对等方请求数据。
注意:当代理 LCP 不存在或不可接受时,LNS 将与对等方协商 LCP。在 LNS 上启用 LCP 重新协商后,LNS 将忽略任何预先协商的 LCP 参数,并与 PPP 客户端重新协商 LCP 参数和 PPP 身份验证。
LNS 将身份验证结果传递给对等方。
重传 L2TP 控制消息
L2TP 对等方维护必须发送到对等设备的控制消息队列。本地对等方(LAC 或 LNS)发送消息后,将等待远程对等方的响应。如果未收到响应,则本地对等方将重新传输消息。此行为允许远程对等方有更多时间来响应消息。
您可以通过以下两种方式控制重新传输行为:
重新传输计数 — 您可以配置本地对等方重新传输未确认消息的次数。增加计数为远程对等方提供了更多响应机会,但也增加了控制流量。对于已建立的隧道,请在层次结构级别包含
retransmission-count-established
语句[edit services l2tp tunnel]
。对于尚未建立的隧道,请包含语句retransmission-count-not-established
。重新传输间隔 — 您可以配置本地对等方等待对控制消息的第一个响应的时间。如果在第一个超时间隔内未收到响应,则重新传输计时器会将每次连续重新传输之间的间隔加倍,最长为 16 秒。增加间隔可以让远程对等方有更多时间做出响应,但也会在可能不可用的对等方上花费更多资源。
minimum-retransmission-interval
在层次结构级别包含语句[edit services l2tp tunnel]
。
本地对等方继续重新传输控制消息,直到发生以下情况之一:
在当前等待期内收到回复。
已达到最大重新传输计数。
如果达到最大计数且未收到响应,则会清除隧道及其所有会话。
达到 16 秒的最大间隔不会停止重新传输。本地对等方在每次后续重新传输后继续等待 16 秒。
以下示例描述了不同情况下的重新传输行为:
示例 1 — 重新传输计数为 3,最小重新传输间隔为 1 秒。
本地对等方发送控制消息。
本地对等方等待 1 秒,但未收到任何响应。
本地对等方重新传输控制消息。这是第一次重传。
本地对等方等待 2 秒,但在间隔到期前收到响应。
重新传输停止,因为在间隔内收到响应。
示例 2 — 重新传输计数为 2,最小重新传输间隔为 8 秒。
本地对等方发送控制消息。
本地对等方等待 8 秒,但未收到任何响应。
本地对等方重新传输控制消息。这是第一次重传。
本地对等方等待 16 秒,但未收到任何响应。
本地对等方重新传输控制消息。这是第二次重新传输。
本地对等方再次等待 16 秒,因为间隔不能增加到 16 秒以上,但未收到响应。
重新传输停止,因为已达到最大重新传输计数 2。
隧道及其所有会话将被清除。
配置 L2TP 控制消息的重传属性
您可以通过配置本地对等方重新传输消息的次数以及在重新传输之前等待响应的时间,来控制未确认的 L2TP 控制消息的重新传输。
L2TP 对等方维护必须发送到对等设备的控制消息队列。本地对等方(LAC 或 LNS)发送消息后,将等待远程对等方的响应。如果在最小重新传输间隔内未收到响应,则本地对等方将重新传输消息并等待双倍的重新传输间隔。每次重新传输消息时,对等方的等待时间都会加倍,最长可达 16 秒。
如果未收到响应,本地对等方将继续发送消息,直到重新传输的次数与重新传输计数匹配。在这种情况下,重新传输将停止,隧道及其所有会话将被清除。
在降级到不支持这些语句的 Junos OS 版本之前,我们建议您通过在层次结构级别包含 no retransmission-count-established
语句和 no retransmission-count-non-established
语句 [edit services l2tp tunnel]
来显式取消配置该功能。
在配置为 LAC 的 MX 系列路由器上进行统一不中断服务的软件升级(统一 ISSU)期间,LAC 不会响应来自 LNS 的控制消息。这可能会导致 LAC L2TP 会话中断。您可以通过确保 LNS 上的最大重新传输计数设置为 16 或更高来避免这种情况。
要设置已建立隧道的最大重新传输计数,请执行以下操作:
配置计数。
[edit services l2tp tunnel] user@host# set retransmission-count-established count
要为未建立的隧道设置最大重新传输计数:
配置计数。
[edit services l2tp tunnel] user@host# set retransmission-count-not-established count
要设置重新传输之间的最小间隔:
配置间隔。
[edit services l2tp tunnel] user@host# set minimum-retransmission-timeout seconds
例如,以下配置指定已建立隧道的最大重新传输计数为 3,最小重新传输间隔为 2 秒:
[edit services l2tp tunnel] user@host# set retransmission-count-established 3 user@host# set minimum-retransmission-timeout 2
使用此示例配置,以下顺序适用于 LAC 或 LNS 发送的每条控制消息:
- 本地对等方发送控制消息并等待来自远程对等方的响应。
- 如果在 2 秒的最小间隔内未收到响应,则本地对等方将重新传输消息。这是第一次重传。
- 如果在 4 秒内未收到响应,则本地对等方将重新传输消息。这是第二次重新传输。
- 如果在 8 秒内未收到响应,则本地对等方将重新传输消息。这是第三次也是最后一次重新传输,因为已达到最大计数。
- 如果在 16 秒内未收到响应,则会清除隧道及其所有会话。
为 SNMP 统计信息收集启用隧道和全局计数器
默认情况下,对 L2TP 统计信息禁用 SNMP 轮询。因此, 表 2 中列出的 L2TP 隧道和全局计数器的默认值为零。
计数器名称 |
类型 |
---|---|
jnxL2tpTunnelStatsDataTxPkts |
隧道 |
jnxL2tpTunnelStatsDataRxPkts |
隧道 |
jnxL2tpTunnelStatsDataTxBytes |
隧道 |
jnxL2tpTunnelStatsDataRxBytes |
隧道 |
jnxL2tpStatsPayloadRxOctets |
全球 |
jnxL2tpStatsPayloadRxPkts |
全球 |
jnxL2tpStatsPayloadTxOctets |
全球 |
jnxL2tpStatsPayloadTxPkts |
全球 |
您可以通过在层次结构级别包含enable-snmp-tunnel-statistics
[edit services l2tp]
语句来启用这些统计信息的收集。启用后,L2TP 进程每 30 秒轮询一次这些统计信息,持续 1000 个会话。统计数据的潜在年龄随着订阅者会话数量的增加而增加;随着会话数的减少,数据的刷新速度会更快。例如,对于 60,000 个会话,这些统计信息都不能超过 30 分钟。
启用这些计数器并使用 RADIUS 临时记帐更新时,系统负载可能会增加。建议您在仅使用 SNMP 统计信息时启用这些计数器。
要为 SNMP 启用 L2TP 统计信息收集,请执行以下操作:
启用统计信息收集。
[edit services l2tp] user@host1# set enable-snmp-tunnel-statistics
验证和管理用户接入的 L2TP
目的
查看或清除有关 L2TP 隧道和会话的信息。
该all
选项不用作执行 L2TP 订阅者批量注销的方法。建议不要在生产环境中将选项与 、 或语句一起使用all
clear services l2tp destination
。clear services l2tp tunnel
clear services l2tp session
与其一次清除所有订阅者,不如考虑根据接口、隧道或目标端点以较小的组清除订阅者。
行动
要显示 L2TP 隧道、会话、错误以及控制和数据包的摘要,请执行以下操作:
user@host> show services l2tp summary
要显示 L2TP 目标,请执行以下操作:
user@host> show services l2tp destination
要清除所有 L2TP 目标,请执行以下操作:
user@host> clear services l2tp destination all
要清除属于目标的所有 L2TP 隧道、属于指定本地网关地址的隧道以及属于指定对等网关地址的隧道的统计信息,请执行以下操作:
user@host>clear services l2tp destination statistics all user@host>clear services l2tp destination local-gateway 203.0.113.2
要显示 L2TP 会话,请执行以下操作:
user@host> show services l2tp session
要清除所有 L2TP 会话、具有指定本地会话 ID 的会话或与 IP 地址或名称指定的本地网关关联的会话,请执行以下操作:
user@host>clear services l2tp session all user@host>clear services l2tp session local-session-id 40553 user@host>clear services l2tp session local-gateway 203.0.113.2 user@host>clear services l2tp session local-gateway-name lns-mx960
要清除所有 L2TP 会话、具有指定本地会话 ID 的会话或与 IP 地址或名称指定的本地网关关联的会话的统计信息:
user@host>clear services l2tp session statistics all user@host>clear services l2tp session statistics local-session-id 17967 user@host>clear services l2tp session statistics local-gateway 203.0.113.2 user@host>clear services l2tp session statistics local-gateway-name lns-mx960
要显示 L2TP 隧道,请执行以下操作:
user@host> show services l2tp tunnel
要清除所有 L2TP 隧道、具有指定本地隧道 ID 的隧道或与 IP 地址或名称指定的本地网关关联的隧道,请执行以下操作:
user@host> clear services l2tp tunnel all user@host>clear services l2tp tunnel local-tunnel-id 40553 user@host>clear services l2tp tunnel local-gateway 203.0.113.2 user@host>clear services l2tp tunnel local-gateway-name lns-mx960
要清除所有 L2TP 隧道、具有指定本地隧道 ID 的隧道或与 IP 地址或名称指定的本地网关关联的隧道的统计信息,请执行以下操作:
user@host> clear services l2tp tunnel statistics all user@host>clear services l2tp tunnel statistics local-tunnel-id 40553 user@host>clear services l2tp tunnel statistics local-gateway 203.0.113.2 user@host>clear services l2tp tunnel statistics local-gateway-name lns-mx960