L2TP协议及AVP

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

*1、保PPP报文。

*2、数据没有加密机制,可通过IPSEC保证数据安全。
*

3、同3层VPN(IPSec\GRE)有所区别的是,L2TP是将来自用户网络的私有数据从二层PPP头部开始进行封装,而三层VPN是将来自用户网络的私有数据从三

层IP报头开始进行封装
*

4、主要用途:企业驻外机构和出差人员可从远程经由公共网络,通过虚拟隧道实现和企业总部之间的网络连接

L2TP报文封装层次结构


        IP报文头

(公网地址)

UDP

报文头

L2TP

报文头

PPP

报文头

IP报文头

(私网地址)

Data

*此报文格式是LAC与LNS之间的数据报文。
*
*L2TP报文头是VPN协议报文头,其内封装的是PPP报文,因此L2TP是二层VPN协议。

协议结构:
描述了控制通道以及PPP帧和数据通道之间的关系。PPP帧在不可靠的L2TP数据通道上进行传输,控制消息在可靠的L2TP控制通道内传输。

L2TP报文头格式


L2TP报文头字段说明:

T:消息类型标志位,0为数据报文,1为控制报文。

*x:保留位。
*S:Ns和Nr标志位,控制报文中此位必须是1。
*O:Offset标志位,为1说明Offset有效,控制报文此位必须为0。
*P:优先级标志位,数据报文此位为1,表示优先处理;控制报文此位为0。
*Ver:必须为2。
*Length:消息总长度,单位为字节。
*Tunnel ID:控制连接标志符,本端有效。
*Session ID:控制连接内的会话标志符,本端有效。
*Ns:本消息的序列号。
*Nr:在控制消息中,表示预期收到的下一个控制消息的序号;数据消息中无效。
*Offset:偏移,如果有效,则数据从偏移后的字节开始。


二、L2TP的关键组件(它们之间通过协商建立隧道)

1、LAC(L2TP Access Concentrator,L2TP 访问集中器)

     LAC是附属在交换网络上的具有PPP 端系统和L2TP 协议处理能力的设备,通常是一个当地ISP的NAS(Network AccessServer网络

问服务器),主要用于为PPP 类型的用户提供接入服务。LAC 位于LNS 和远端系统之间,用于在LNS和远端系统之间传递信息包。它把从远

端系统收到的信息包按照L2TP 协议进行封装并送往LNS,同时也将从LNS收到的信息包进行解封装并送往远端系统。LAC 与远端系统之间采

用本地连接或PPP 链路,VPDN 应用中通常为PPP链路。

 

2、LNS(L2TP Network Server,L2TP 网络服务器)
    LNS 既是PPP端系统,又是L2TP 协议的服务器端,通常作为一个企业内部网的边缘设备。LNS 作为L2TP隧道的另一侧端点,是

LAC的对端设备,是LAC 进行隧道传输的PPP 会话的逻辑终止端点。通过在公网中建立L2TP隧道,将远端系统的PPP 连接的另一端由原来

LAC 在逻辑上延伸到了企业网内部的LNS。

3VPN用户:

指通过L2TP协议连入VPN的用户,通常是外地出差员工或办事机构。

三、会话和隧道这两个概念

    在一个LNS和LAC对之间存在着两种类型的连接,一种是隧道(Tunnel)连接,一对LAC和LNS中可以有多个L2TP隧道;另一种是会话

(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。

    隧道由一个控制连接和一个或多个会话(Session)组成。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类

等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。

  L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,该隧道连

接将被断开。 

 L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(SessionID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标

识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。  

   隧道(tunnel)和会话(session)的关系,如下图所示;可以形象的理解为会话是建立在隧道之中的,隧道想成一个有10个车道的高

速公路,一台拨号PC的数据流为一个会话,相当于占用了一个车道(告诉公路有多少车道是设备规定好的),这个车道只能跑这个运载这个

PC的报文的卡车。(比如某型号设备每条隧道最多支持1000个会话)。



     

•session是由LAC发起的,事实上由LNS发起也是合法的,但消息类型有所不同,分别是:
                         

•在一对LAC和LNS中可以存在多条隧道,每条隧道可以包含多个Session,但只有一个控制连接
•Session建立前,必须首先保证控制连接存在,如没有,首先建立控制连接,然后再建立session;如已存在控制连接,直接建立session
•在拆除Session时,如果还有其他Session存在,则控制连接不拆除;如果没有其他Session存在,控制连接随之拆除
                           

L2TP协议

 L2TP协议在TCP/IP协议栈中的位置


     此图说明了L2TP协议在整个TCP/IP层次结构中位置,也指明了ip数据包在传输过程中所经过的协议栈结构和封装过程;

我们以一个用户侧的IP报文的传递过程来描述VPN工作原理,黄色标示的IP为需要传递的用户数据!

    在LAC侧的链路层将用户数据报文作为加上ppp封装,然后传递给L2TP协议,L2TP再封装成UDP报文,UDP再次封装成可以在

Internet上传输的IP报文,此时的结果就是IP报文中又有IP报文,但两个IP地址不同,一般用户报文的IP地址是私有地址,而LAC上的IP地址

为公有地址,至此完成了VPN的私有数据的封装;

    在LNS侧,收到L2TP/VPN的IP报文后将IP、UDP、L2TP报文头去掉后就恢复了用户的PPP报文,将PPP报文头去掉就可以得到IP报

文,至此用户IP数据报文得到,从而实现用户ip数据的透明隧道传输,而且整个PPP报头/报文在传递的过程中也保持未变,这也验证了L2TP

是一个二层VPN隧道协议!

L2TP协商交互过程

    为了在VPN用户和服务器之间传递数据报文,必须在LAC和LNS之间建立传递数据报文的隧道和会话连接,隧道是保证具有相同会

话连接特性的一组用户可以共享的连接属性所定义的通道,而会话是针对每个用户与企业VPN服务器建立连接的PPP数据通道,多个会话复

用在一个隧道连接上隧道和会话是动态建立与删除的。

会话的建立是由PPP模块触发,如果该会话在建立时没有可用的隧道结构,那么先建立隧道连接,会话建立完毕后开始进行数据传输!

1)L2TP建立流程


  L2TP隧道的建立是一个三次握手的过程,首先由LAC发起隧道建立请求SCCRQ,LNS收到请求后进行应答SCCRP,最后LAC在收到应

答后再给LNS返回确认SCCCN;隧道建立。

    会话建立的过程与隧道类似,首先由LAC发起会话建立请求ICRQ,LNS收到请求后返回应答ICRP,LAC收到应答后返回确认ICCN,会

话建立!

    L2TP的会话建立由PPP触发,隧道建立由会话触发。由于多个会话可以复用在一条隧道上,如果会话建立前隧道已经建立,则隧道不用

重新建立。

2)L2TP隧道的维护


    隧道建立后,一直要等到该隧道所属会话全部下线后,再进行拆除,为了确认对端的隧道结构依然存在,需要定时发送与对端的维护报

文,其流程为:LAC或LNS发出Hello报文,对应的LNS或LAC发出确认信息!

3)L2TP隧道拆除


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

四、AVP简介
一种对属性类型和属性值统一编码的方法;L2TP控制消息通过AVP携带各种参数;首先说明属性类型,然后说明属性值。
格式:

*M:强制位,该位置1时,不识别的AVP将导致相应的session或tunnel终止。
*H:隐藏标志位,该位置1,表示AVP值被隐藏显示。
*rsvd:保留位。
*Length:AVP报文长度。
*AttributeType:属性类型定义。
*AttributeValue:属性值。
属性类型和属性值共同决定了AVP的含义和内容。

AVP的一种加密解密算法:

加密过程:

c1= p1⊕ MD5(AV|S|RV)

c2= p2⊕ MD5(S|c1)

ci = pi⊕ MD5(S|ci-1)

其中AV是2字节的属性类型,S是通信双方的共享秘密,RV为随机向量

对应解密过程是:

p1=c1⊕ MD5(AV|S|RV)

p2=c2 ⊕ MD5(S|c1)

pi=ci ⊕ MD5(S|ci-1)

其中AV是2字节的属性类型,S是通信双方的共享秘密,RV为随机向量


参考博客:http://blog.csdn.net/u013485792/article/details/50838272

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值