摘要

  • L2F 先用 MID=0 建立隧道,再以非零 MID 分别接受客户端连接;前一个 OPEN 不能替后一个签字。
  • CLID、MID、Challenge 与 Key 指向协议状态并保护有限的 NAS—Home Gateway 上下文,不等于远端人的授权身份。
  • RFC 2341 明说数据流量没有 L2F 可靠交付保证,因此控制面成功不能证明每帧到达,更不能证明应用产生了可用结果。

先问这张收据是谁开的

RFC 2341 描述的是虚拟拨号。远端用户经 PSTN 或 ISDN 拨到 ISP 的 Network Access Server(NAS),物理呼叫落在接入侧;PPP 或 SLIP 链路却由另一处的 Home Gateway 终结。L2F 在两者之间封装链路层帧,让接入地点与协议终结地点分离。

这种分离不是一个状态,而是一串交接:电话呼叫到达 NAS;PPP 的 LCP 开始协商;NAS 从有限信息中识别“表面身份”并选择 Home Gateway;两台设备建立 L2F 隧道;Home Gateway 接受某一客户端连接;后续认证与网络层配置完成;帧实际穿过不可靠链路;最后应用自己建立会话并返回结果。

只看其中一个绿色灯,结论就会提前。

隧道控制使用 MID=0。双方交换 L2F_CONF 和 L2F_OPEN,带上 Name、Challenge 和各自分配的 CLID。交换成功后,RFC 的措辞是隧道“可用于建立客户端”。它确认了容量与对端上下文,却没有确认任何非零 MID 已被接受。

每个客户端另用一个非零 MID。NAS 发送新的 L2F_OPEN,其中可以带认证类型,以及来自 CHAP、PAP 或 LCP 的资料。Home Gateway 返回 L2F_OPEN,才表示接受该客户端连接;PPP 或 SLIP 帧的转发随后开始。同一隧道可以承载多条客户端连接,每条都有自己的 OPEN/CLOSE 生命周期。隧道成功、客户端 A 成功与客户端 B 成功,是三张不同收据。

CLID 和 MID 解决分流,不解决身份

底层介质不能可靠区分交织的隧道时,CLID 用来把包送进正确的隧道上下文。MID 再把包送进隧道内某个客户端上下文。MID=0 专属隧道状态,非零 MID 对应客户端;关闭后的 MID 若被复用,必须按一条全新连接初始化。

这些规则防止状态串线,但标识符所指的仍是状态表条目。它不能证明键盘后面是谁,不能证明该人此刻拥有哪项权限,也不能证明上层应用承认同一个主体。把 MID 直接写进授权策略,相当于把多路复用把手提升成身份证件。

协议自己已经把边界说清楚。ISP 只追求足以发现用户“apparent identity”和目标 Home Gateway 的认证;Home Gateway 再作接受或拒绝决定。连接被接受以后,还可以有第三阶段 PPP/SLIP 认证,而那部分超出 RFC 2341 的范围。RFC 1994 的 CHAP 又有独立的 Challenge/Response 边界。收集名称、转交凭据、验证秘密、授予网络权限和通过应用登录,必须分别记账。

控制消息重传,不等于数据可靠交付

RFC 2341 对控制面和数据面作了不对称选择。L2F 控制消息必须重传;数据流量却没有 L2F 提供的流控和可靠交付,重试责任留给被承载的协议。普通数据包通常也不使用 L2F Seq 字段。

因此,一个得到确认的 OPEN、一个 ECHO 响应、一个正确的 Key,或者持续增长的隧道计数器,都不能充当每个 payload frame 的签收单。它们可能证明对端曾响应、某个上下文存在、某处看见了流量;它们没有建立逐帧端到端保管链。

对于 PPP,L2F 承载的是去掉物理 framing、transparency 和 FCS 后的链路层帧。PPP Echo、NCP 协商和 TERMREQ 都只是被隧道搬运的 HDLC-like frames。L2F 自己并不识别 PPP 的 TERMREQ,必须由 PPP endpoint 的结果触发相应的 L2F 关闭转换。这说明相邻层可以联动,却不会自动继承彼此的知识。

PPP 还要经历 LCP 建立、可选认证和 NCP 网络层配置。应用随后才开始自己的认证、会话、请求处理与结果返回。一个客户端 OPEN 最多把证据链推进到链路层转发的入口,不能提前替应用签收。

Key 保护的范围比“安全接入”窄

建立隧道时,NAS 与 Home Gateway 使用共享秘密和 Challenge/Response 计算。后续包可以携带由 128-bit authentication response 折叠出的 32-bit Key;未知 CLID、错误 Key 或无效包应被丢弃。它能降低已配置 NAS—Home Gateway 关系内的某些伪造风险。

但这不是 payload confidentiality,不是最终用户授权,也不是应用认证或结果保证。后来的 RFC 3193 在讨论 L2TP/IPsec 时,把 tunnel authentication、逐包完整性、防重放、机密性和端到端安全分别列出。这不能倒写成 1998 年 L2F 已有的能力,却能提醒我们:对端隧道设备回答了,与用户业务安全完成了,从来不是同一个命题。

历史文档的证据也有边界

RFC 2341 当前状态是 Historic。其 Status of Memo 明说它不规定任何种类的 Internet 标准;IETF Datatracker 将其列入 Legacy stream,并说明没有 IETF endorsement 或正式标准流程地位。这不抹掉文档的技术价值,但 RFC 的发布只证明一份协议被记录下来,不证明部署规模、互操作性、当前使用或商业成效。

更耐用的遗产,是把“连上了”拆成可核验的对象:物理呼叫、LCP、目标 Gateway、CLID 隧道、MID 客户端、后续认证、两端帧计数、NCP、应用会话和用户可见结果。NAS 与 Home Gateway 的计数器不能先相加再丢掉原始值,关闭状态也要两端分别记录。只有这样,控制面事实才不会被扩写成它从未观察过的现实。

来源