L2tp协议

一. 相关名词解释

LAC(L2TP Access Concentrator L2TP访问集中器):

是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备。LAC一般是一个网络接入服务器NAS,主要用于通过PSTN/ISDN网络为用户提供接入服务。

LNS(L2TP Network Server L2TP网络服务器):
是PPP端系统上用于处理L2TP协议服务器端部分的设备。

VPDN(Virtual Private Dial Network,虚拟私有拨号网)
指利用公共网络(如ISDN和PSTN)的拨号功能及接入网来实现虚拟专用网。

二. 理解L2TP几个重要的概念

1、隧道和会话的概念

在一个LNS和LAC对之间存在着两种类型的连接,一种是隧道(Tunnel)连接,一对LAC和LNS中可以有多个L2TP隧道;另一种是会话(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。

隧道由一个控制连接和一个或多个会话(Session)组成。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。
Ø L2tp使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,则该隧道连接将被断开。
Ø L2tp报文头中包含隧道标示符(Tunnel ID)和会话标示符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。

隧道(tunnel)和会话(session)的关系,如下图所示;可以形象的理解为会话是建立在隧道之中的,隧道想成一个有10个车道的高速公路,一台拨号PC的数据流为一个会话,相当于占用了一个车道(告诉公路有多少车道是设备规定好的),这个车道只能跑这个运载这个PC的报文的卡车。(比如某型号设备每条隧道最多支持1000个会话)。
图:隧道与会话

2、控制消息和数据消息的概念

L2TP中存在两种消息:控制消息和数据消息。
Ø 控制消息:用于隧道和会话连接的建立、维护以及传输控制;控制消息的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制。
Ø 数据消息:用于封装PPP帧并在隧道上传输;数据消息的传输是不可靠传输,如果数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。
控制消息和会话消息共享相同的报文头。

三. L2tp报文头的格式

Type(T):标识消息的类型,0表示是数据消息,1表示控制消息。

 

Length(L):置1时,说明Length域的值是存在的,对于控制消息L位必须置1。

 

X bit:保留位,所有保留位均置0。

 

Sequence(S):置1时,说明Ns和Nr是存在的,对于控制消息S必须置1。

 

Offset(O):置1时,说明Offset Size域是存在的,对于控制消息O必须置0。

 

Priority(P):只用于数据消息,对于控制消息P位置0,当数据消息此位置1时,说明该消息在本列队和传输时应得到优先处理。

 

Ver:必须是2,表示L2TP数据报头的版本。

 

Length:标识整个报文的长度(以字节为单位)。

 

Tunnel ID:标识L2TP控制链接,L2TP Tunnel标识符只有本地意义,一个Tunnel两端被分配的Tunnel ID可能会不同,报头中的Tunnel是指接收方的Tunnel ID,而不是发送方的。本端的Tunnel ID在创建Tunnel时分配。通过Tunnel ID AVPs和对端交换Tunnel ID信息。

 

Session ID:标识Tunnel中的一个session,只有本地意义,一个session两端Session ID可能不同。

 

Ns:标识发送数据或控制消息的序号,从0开始,以1递增,到216再从0开始。

 

Nr:标识下一个期望接收到的控制消息。Nr的值设置成上一个接收到的控制消息的Ns+1。这样是对上一个接收到的控制消息的确认。数据消息忽略Nr。

 

Offset Size:如果值存在的话,标识有效载荷数据的偏移。

 

四. L2tp的概念与原理

1. L2tp的概念

L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是 VPDN(Virtual Private Dial-up Network,虚拟私有拨号网)隧道协议的一种。

VPDN 有以下两种实现方式:
(1) 接入服务器发起 VPDN 连接
NAS(Network Access Server,网络接入服务器)通过使用 VPDN 隧道协议,将客户的 PPP 连接直接连到企业的 VPDN 网关上,从而与 VPDN 网关建立隧道。这些对于用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和地址分配,而不占用公共地址。该方式需要 NAS 支持 VPDN 协议、认证系统支持 VPDN 属性。

(2) 用户发起 VPDN 连接
客户端与 VPDN 网关建立隧道。这种方式由客户端先建立与 Internet 的连接,再通过专用的客户软件(如 Windows 2000 支持的 L2TP 客户端)与 VPDN 网关建立隧道连接。用户上网的方式和地点没有限制,不需 ISP 介入。但是,用户需要安装专用的软件(一般都是 Windows 2000 平台),限制了用户使用的平台。
L2TP(RFC 2661)是一种对 PPP 链路层数据包进行隧道传输的技术,允许二层链路端点(LAC)和 PPP 会话点(LNS)驻留在通过分组交换网络连接的不同设备上,从而扩展了 PPP 模型,使得PPP 会话可以跨越帧中继或 Internet 等网络。

2. L2tp的协议结构

通常L2TP数据以UDP报文的形式发送。L2TP注册了UDP  1701 端口,但是这个端口仅用于初始的隧道建立过程中。L2TP隧道发起方任选一个空闲的端口(未必是 1701)向接收方的 1701 端口发送报文;接收方收到报文后,也任选一个空闲的端口(未必是 1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道保持连通的时间段内不再改变。

 

3. L2TP 隧道模式及隧道建立过程

L2TP 隧道的建立包括以下两种典型模式。
l NAS-Intiated
如下图所示,由LAC端(指NAS)发起L2TP隧道连接。远程系统的拨号用户通过PPPoE/ISDN拨入LAC,由LAC通过Internet向LNS发起建立隧道连接请求。拨号用户的私网地址由LNS分配;对远程拨号用户的验证与计费既可由LAC侧代理完成,也可在LNS侧完成。

l Client-Initiated
如下图所示,直接由LAC客户(指本地支持L2TP协议的用户)发起L2TP隧道连接。LAC客户获得Internet访问权限后,可直接向LNS发起隧道连接请求,无需经过一个单独的LAC设备建立隧道。LAC客户的私网地址由LNS分配。
在 Client-Initiated 模式下,LAC 客户需要具有公网地址,能够直接通过 Internet 与 LNS 通信。

 

下面以 NAS-Initiated 模式的 L2TP 隧道为例,介绍 L2TP 的呼叫建立流程。

如上图所示,L2TP隧道的呼叫建立流程过程为:

 

(1)  远端系统 Host 发起呼叫连接请求;

(2) Host 和 LAC 端(RouterA)进行 PPP LCP 协商;

(3) LAC 对 Host 提供的用户信息进行 PAP 或 CHAP 认证;

(4) LAC 将认证信息(用户名、密码)发送给 RADIUS 服务器进行认证;

(5) RADIUS 服务器认证该用户,如果认证通过,LAC 准备发起 Tunnel 连接请求;

(6) LAC 端向指定 LNS 发起 Tunnel 连接请求;

(7) 在需要对隧道进行认证的情况下,LAC 端向指定 LNS 发送 CHAP challenge 信息,LNS 回送该 challenge 响应消息 CHAP  response,并发送 LNS 侧的 CHAP  challenge,LAC 返回该challenge 的响应消息 CHAP response;

(8) 隧道验证通过;

(9) LAC 端将用户 CHAP response、response identifier 和 PPP 协商参数传送给 LNS;

(10) LNS 将接入请求信息发送给 RADIUS 服务器进行认证;

(11) RADIUS 服务器认证该请求信息,如果认证通过则返回响应信息;

(12) 若用户在 LNS 侧配置强制本端 CHAP 认证,则 LNS 对用户进行认证,发送 CHAP challenge,用户侧回应 CHAP response;

(13) LNS 再次将接入请求信息发送给 RADIUS 服务器进行认证;

(14) RADIUS 服务器认证该请求信息,如果认证通过则返回响应信息;

(15) 验证通过,LNS 端会给远端用户分配一个企业网内部 IP 地址,用户即可以访问企业内部资源。

L2tp隧道建立后需要进行维护:隧道建立后,一直要等到该隧道所属会话全部下线后,再进行拆除,为了确认对端的隧道结构依然存在,需要定时发送与对端的维护报文,其流程为:LAC或LNS发出Hello报文,对应的LNS或LAC发出确认信息!

隧道拆除流程比其建立过程要简单,隧道的任何一端发出拆链通知StopCCN,对端返回确认;会话的拆除流程为:会话一端发出拆链通知CDN,对端返回确认即可!

posted @ 2018-05-07 09:28  阿鹏2019  阅读(1746)  评论(0编辑  收藏  举报