更新时间:2024-07-16 21:21
L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接;PPTP使用单一隧道,L2TP使用多隧道;L2TP提供包头压缩、隧道验证,而PPTP不支持。
第二层隧道协议(英语:Layer Two Tunneling Protocol,缩写为L2TP)是一种虚拟隧道协议,通常用于虚拟专用网。L2TP协议自身不提供加密与可靠性验证的功能,可以和安全协议搭配使用,从而实现数据的加密传输。经常与L2TP协议搭配的加密协议是IPsec,当这两个协议搭配使用时,通常合称L2TP/IPsec。
L2TP支持包括IP、ATM、帧中继、X.25在内的多种网络。在IP网络中,L2TP协议使用注册端口UDP 1701。因此,在某种意义上,尽管L2TP协议的确是一个数据链路层协议,但在IP网络中,它又的确是一个会话层协议。
L2TP协议提供了如下功能。
(1)L2TP是用来整合多协议拨号服务至现有的Intemet 服务提供商点。PPP定义了多协议跨越第2层点对点链接的一个封装机制。特别地,用户通过使用众多技术之一(如拨号POTS,ISDN,ADSL等)获得第2层连接到网络访问服务器(NAS),然后在此连接上运行PPP。在这样的配置中,第2层终端点和PPP会话终点处于相同的物理设备中(如NAS)。
(2)L2TP扩展了PPP模型,允许第2层和PPP终点处于不同的由包交换网络相互连接的设备中。
通过L2TP,用户在第2层连接到一个访问集中器(如调制解调器池、ADSL,DSLAM等),然后这个集中器将单独得的PPP帧隧道到NAS。这样,可以把PPP包的实际处理过程与第2层连接的终点分离开来。
(3)对于这样的分离,其明显的一个好处是,第2层连接可以在一个(本地)电路集中器上终止,然后通过共享网络如帧中继电路或Intermet扩展逻辑PPP会话,而不用在NAS上终止。从用户角度看。
直接在NAS上终止第2层连接与使用L2TP没有什么功能上的区别。L2TP协议也用来解决“多连接联选组分离”问题。多链接PPP,一般用来集中ISDNB通道,需要构成多链接捆绑的所有通道在一个单网络访问服务器(NAS)上组合。因为L2TP使得PPP会话可以出现在接收会话的物理点之外的位置,它用来使所有的通道出现在单个的NAS上,并允许多链接操作,即使是在物理呼叫分散在不同物理位置的NAS 上的情况下。
(4)L2TP使用以下两种信息类型,即控制信息和数据信息。控制信息用于隧道和呼叫的建立、维持和清除。数据信息用于封装隧道所携带的PPP帧。控制信息利用L2TP中的一个可靠控制通道来确保发送。当发生包丢失时,不转发数据信息。
L2TP是基于连接的协议,建立一条隧道传递PPP会话的过程包括两步。
(1)建立一条隧道的控制连接。
(2)根据入流/出流呼叫的请求,触发建立一个会话(Session)。
L2TP隧道建立在LAC和LNS之间,由一条控制连接和至少一个L2TP会话组成。在一对LAC和LNS之间可以建立多条L2TP隧道。
L2TP会话也建立在LAC与LNS之间,但必须在L2TP能够通过隧道传递PPP帧之前,隧道建立成功之后才能建立。会话与呼叫是一一对应的。呼叫状态由LAC和LNS维护。一条L2TP隧道中可以建立多个会话。
控制连接的建立包括对端的身份验证以及对端的L2TP版本号识别、帧类型和硬件承载能力等信息的协商交换。在控制连接的建立过程中,L2TP的隧道验证功能是可选的,如果使用,则在LAC和LNS之间必须存在唯一的共享认证密钥。
会话连接的建立必须在隧道(控制连接)成功建立之后进行。每个会话连接对应于LAC和LNS之间的一个PPP数据流。与隧道的建立过程不同,会话连接的建立是有方向性的。
LAC请求LNS接受一个对应于“入呼叫”的会话,或者LNS请求LAC接受一个对应于“出呼叫”的请求。
L2TP报文头中包含隧道标识(TunnelID)和会话标识(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同而会话标识不同的报文复用在同一条隧道上,隧道标识与会话标识是由对端分配的,只对接收端有意义,对发送端没有意义。
L2TP的协议结构如表1所示。
L2TP协议中相关字段的含义如下:
·T—T位表示信息类型。若是数据信息,该值为0;若是控制信息,该值为1。
·L—当设置该字段时,说明Length字段存在,表示接收数据包的总长。对于控制信息,必须设置该值。
·X—X位为将来扩展预留使用。在导出信息中所有预留位被设置为0,导入信息中该值忽路。
·S——如果设置S位,那么Nr字段和Ns字段都存在。对于控制信息,S位必须设置。
·O——当设置该字段时,表示在有效负载信息中存在Offct Size字段。对于控制信息,该字段值设为0。
·P—如果P(Priority)位值为1,表示该数据信息在其本地排队和传输中将会得到优先处理。
·版本(Ver)——Ver位的值总为002。它表示一个版本L2TP信息。
·长度(Length)信息总长,包括头、信息类型AVP以及另外的与特定控制信息类型相关的AVPs。
·隧道ID(Tunnel ID)——识别控制信息应用的隧道。如果对等结构还没有接收到分配的Tunnel ID,那么TunnelID必须设置为0。一旦接收到分配的TunnelID,所有更远的数据包必须和Tunnel ID一起被发送。
·会话ID(Call ID)——识别控制信息应用的隧道中的用户会话。如果控制信息在隧道中不应用单用户会话(例如,一个Stop-Control-Connection-Notification 信息),Call ID必须设置为0。
·Nr——期望在下一个控制信息中接收到的序列号。
·Ns—数据或控制信息的序列号。
·偏移量大小和填充(Ofset Size&Pad)——该字段规定通过L2F协议头的字节数,协议头是有效负载数据起始位置。Offset Padding中的实际数据并没有定义。如果Offset字段当前存在,那么L2TP头Offset Padding的最后8位字节后结束。
通常所讲的L2TP都是指L2TPv2,之后又推出了一个新版本L2TPv3。现在对L2TPv2和L2TPv3作一个比较。
L2TPv3的前身是Cisco公司的专有协议——通用隧道接口(Universal Tunnel Interface,UTI)。UTI能够在IP网络上提供简单而高速的透明传输L2业务的能力,但缺乏信令能力以及大规模商用必须的标准化支持。L2TPv3提供了与UTI类似和增强的功能,以标准化和信令的方式替代UTI。L2TPv3能够很好地实现代码重用、互操作性经验,以及在演进之间保持平衡。与L2TPv2类似,L2TPv3也由控制平面和数据平面两个基本单元组成。
与L2TPv2相比,L2TPv3进行了两点改进。
(1)分离所有与PPP相关的AVP和引用,包括专门针对PPP的L2TP数据头的部分。将PPP相关部分、ATMAAL5封装,以及以太网封装等内容专门在其他文档中进行规定。
(2)为了适应大规模应用的扩展性要求,将原来16比特的Session ID和Tunnel ID,扩展为32比特。
从用途上来说,二者也明显不同。L2TPv2可用于在IP网络上传输PPP流量,一般用于零售和批发的远程接入VPN业务。而L2TPv3可用于在IP网络上传输PPP、以太网、帧中继和ATM等二层流量,可用于零售和批发的专线VPN业务。
L2TPv3可以让运营商将所有类型的业务流量都汇聚到单一的IP网络基础设施上,充分利用IP通信的全球可达性,使得企业客户可以享受到更低费用的服务。
L2TP协议是目前IETF的标准,由IETF融合PPTP与L2F而形成。两者都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。尽管两个协议非常相似,但是仍存在以下几方面的不同。
(1)PPTP要求互联网络为IP网络,L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP)、帧中继永久虚拟电路(PVCs)、X.25虚拟电路(VCs)或ATMVCs网络上使用。
(2)PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道。
(3)L2TP可以提供包头压缩。当压缩包头时,系统开销占用4个字节,而PPTP协议下要占用6个字节。
(4)L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSec共同使用时,可以由IPSec提供隧道验证,而不需要在第2层协议上验证隧道。