目录
L2TP简介
第二层隧道协议(L2TP)是一种虚拟隧道协议,是为在用户和企业的服务器之间透明传输PPP报文而设置的隧道协议。L2TP协议本身不提供加密与可靠性验证的功能,可以和安全协议搭配使用,从而实现数据的加密传输。
L2TP构建图解
L2TP隧道建立在LAC和LNS之间,由一条控制连接和至少一个L2TP会话组成。在一对LAC和LNS之间可以建立多条L2TP隧道。
会话连接的建立必须在隧道(控制连接)成功建立之后进行。每个会话连接对应于LAC和LNS之间的一个PPP数据流。与隧道的建立过程不同,会话连接的建立是有方向性的。
LAC请求LNS接受一个对应于“入呼叫”的会话,或者LNS请求LAC接受一个对应于“出呼叫”的请求。
L2TP报文头中包含隧道标识(TunnelID)和会话标识(Session ID)信息,用来标识不同的隧道和会话。隧道标识与会话标识是由对端分配的,只对接收端有意义,对发送端没有意义。
L2TP建立及拆除流程
L2TP的会话建立由PPP触发,隧道建立由会话触发。由于多个会话可以复用在一条隧道上,如果会话建立前隧道已经建立,则隧道不用重新建立。
L2TP隧道的建立
L2TP隧道的建立是一个三次握手的过程。
SCCRQ(Start-Control-Connection-Request):控制连接发启请求。由LAC或者LNS向对端发送,用来初始化LAC和LNS之间的隧道,开始隧道的建立过程。NGFW(下一代防火墙)的应用场景中,一般都是由LAC向LNS发起请求。
SCCRP(Start-Control-Connection-Reply):表示接受了对端的连接请求,隧道的建立过程可以继续。
SCCCN(Start-Control-Connection-Connected):对SCCRP的回应,完成隧道的建立。
L2TP会话的建立
会话的建立与隧道类似,也是一个三次握手的过程。
ICRQ(Incoming-Call-Request):当LAC检测到有用户拨入电话的时候,向LNS发送ICRQ,请求在已经建立的隧道中建立会话。
ICRP(Incoming-Call-Reply):用来回应ICRQ,表示ICRQ成功,LNS也会在ICRP中标识L2TP会话必要的参数。
ICCN(Incoming-Call-Connected):用来回应ICRP,L2TP会话建立完成。
L2TP隧道和会话维护和拆除流程
维护和拆除的过程比较简单,都是一方发出请求,一方确认就好了。
StopCCN(Stop-Control-Connection-Notification):由LAC或者LNS发出,通知对端隧道将要停止,控制连接将要关闭。另外,所有活动的会话都会被清除。
HELLO:隧道保活控制消息。L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,如果在一段时间内未收到Hello报文的应答,隧道将被清除。
CDN(Call-Disconnect-Notify):由LAC或者LNS发出,通知对端会话将要停止。
L2TP协议栈结构及数据包的封装过程
L2TP隧道和会话的验证过程
LCP:负责链路的建立,维护以及拆除
CHAP:对客户端进行身份认证
IPCP:负责协商IP地址以及DNS等信息
L2TP和PPTP的区别
PPTP只能在两端间建立单一隧道,L2TP支持在两端点间使用多隧道,这样可以针对不同的用户创建不同的服务质量
L2TP可以提供隧道验证机制,而PPTP不能提供这样的机制,但当L2TP或PPTP与IPSec共同使用时,可以由IPSec提供隧道验证,不需要在第二层协议上提供隧道验证机制
PPTP要求互联网络为IP网络,而L2TP只要求隧道媒介提供面向数据包的点对点连接,L2TP可以在IP(使用UDP),FR,ATM,x.25网络上使用
L2TP可以提供包头压缩。当压缩包头时,系统开销(voerhead)占用4个字节,而PPTP协议下要占用6个字节