L2TP技术.docx
- 文档编号:8667235
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:11
- 大小:91.83KB
L2TP技术.docx
《L2TP技术.docx》由会员分享,可在线阅读,更多相关《L2TP技术.docx(11页珍藏版)》请在冰豆网上搜索。
L2TP技术
L2TP技术
目录
第1章.简介3
第2章.L2TP协议相关术语解析4
第3章.L2TP协议介绍5
3.1虚拟专用拨号网络概述5
3.2L2TP协议概述5
3.3L2TP的封装结构5
3.4L2TP的报文结构6
3.5L2TP的控制消息类型8
3.6AVP结构9
3.7建立L2TP隧道10
3.8对L2TP隧道进行认证:
10
3.9建立L2TP会话11
3.10虚拟模板接口与虚拟访问接口:
12
3.11L2TP和L2F以及PPTP的比较12
第4章.调试命令及调试信息13
第1章.简介
本章主要讲述L2TP(Layer2TunnelingProtocol第二层隧道协议)的原理及实现。
本章主要内容:
●L2TP协议相关术语解析
●L2TP协议介绍
●调试命令及调试信息
第2章.L2TP协议相关术语解析
LAC―—L2TP访问集中器(L2TPAccessConcentrator)。
LAC是L2TP隧道的一个结点,它的对端就是LNS。
LAC位于LNS和远程用户之间,在它们之间充当转发的角色。
LNS――L2TP网络服务器(L2TPNetworkServer)。
LNS是L2TP隧道的另外一个结点,它的对端就是LAC。
一般LNS位于企业网络的边缘或者企业网络的防火墙后面。
AVP――属性值对(AttributeValuePair)。
每个AVP拥有唯一的属性类型(用一个整数表示)和对应该属性的值。
多个AVP就构成了控制消息,控制消息被用来建立,维持和终止通道。
Call――远程用户和LAC的一个连接。
例如通过PSTN连入的电话拨号。
在LAC和LNS之间已经成功建立的一个会话上能够建立一个call。
CalledNumber――被叫号码。
用来让接收方知道拨叫用户拨叫的目的号码。
CallingNumber――主叫号码。
用来让接收方知道拨叫用户拨叫的源端号码。
CHAP――挑战握手认证协议。
PPP采用的一种密码不被明文传输的认证协议。
ControlConnection――控制连接。
隧道用控制连接来建立、释放和维持隧道本身以及隧道拥有的所有会话。
ControlMessages――控制消息。
控制消息在每组LAC和LNS对端设备之间交换,用来控制隧道本身以及隧道拥有的所有会话的特征。
Peer――对端。
在L2TP中,对端指的就是LAC和LNS的一种。
POTS―简易老式电话业务(PlainOldTelephoneService,)
Tunnel―隧道。
在一组LAC-LNS对中存在一个隧道。
隧道由控制连接和在隧道上建立的会话组成。
隧道承载LAC和LNS之间传输的封装PPP报文以及控制报文。
Session―会话。
当远程客户和LNS之间的端到端的PPP连接建立起来以后,LAC和LNS之间就会创建一个L2TP会话。
和这个PPP连接有关的数据报文在LAC和LNS之间的隧道上传输。
在L2TP会话和与它们相关的呼叫(call)之间存在一个一对一的关系。
第3章.L2TP协议介绍
3.1虚拟专用拨号网络概述
虚拟专用拨号网络(VirtualPrivateDial-upNetwork,VPDN)为那些期望通过因特网服务供应商(ISP)并主要连接到公司网络的远程用户提供连接。
VPDN允许独立的协议域共享调制解调器、访问服务器和ISDN路由器等通用访问基础设施。
企业可以通过向ISP购买或者租用远程访问基础设备来允许他们的远程工作组访问内部网络。
VPDN使用第二层隧道协议(比如Layer2Forwarding,L2F第二层转发协议;Point-to-PointTunnelingProtocol,PPTP点对点隧道协议;Layer2TunnelingProtocol第二层隧道协议等),使得因特网服务商(ISP)或者其他访问服务能够创建虚拟通道,把客户的远程站点或远程用户与企业的主网连接起来。
ISP的网络访问服务器接受远程用户的拨入,剥离任何链接的帧和透明字节,用上面的一种隧道协议(比如L2TP)封装,并通过相应的通道转发。
客户(企业网络)的主网关接受这些L2TP帧,剥离L2TP封装,并为相应的接口处理这些进入的帧。
3.2L2TP协议概述
L2TP(第二层隧道协议,Layer2TunnelingProtocol)是VPDN技术的一种。
L2TP允许用户拨入ISP,并允许拨入用户把他们的连接并入到公司网络中,使得公司网络能够向所有拨入连接通过所有的逻辑属性,比如鉴别网络层属性,允许ISP保持其在物理属性方面的工作重点。
L2TP使用两个VPDN对等设备构成了L2TP隧道:
L2TP访问集中器(L2TPAccessConcentrator,LAC)和L2TP网络服务器(L2TPNetworkServer,LNS)。
用户将拨入LAC,此时,LAC将开始发起与LNS之间的L2TP隧道连接。
LNS可以位于公司网络的边缘,或者位于公司网络内部的防火墙的后面。
3.3L2TP的封装结构
通过L2TP隧道的报文封装如下图17-1。
L2TP从PPP接收到属于自己的报文直接封装L2TP报头以后交给UDP发送(UDP端口号1701)。
由于L2TP的报文是直接加上UDP头进行传输,因此近似认为L2TP处于UDP层之上。
3.4L2TP的报文结构
L2TPheader的结构如下图17-2:
构成L2TP数据头的字段的长度如上图中所示,具体含义如下:
▪T表示类型位:
此位用来指定此消息是控制消息还是数据消息。
如果它的值是1就表示控制消息,值位0就表示数据消息;
▪L表示长度位:
此位用来表示长度字段是否出现在消息中。
对于所有的控制消息而言,此位必须为1;
▪RSV表示预留位:
这些位用来为将来的扩展设备预留。
对于输出消息,所有预留位必须都设置为0,对于输入的消息而言,这些位则可以忽略;
▪S表示序列位:
此为用来表示是否存在Ns以及Nr字段,对于所有的控制消息,此位必须设置为1;
▪O表示偏移量:
此为用来表示是否存在偏移量字段。
对于所有的控制消息,此位必须设置为0;
▪P表示优先级:
此位用来表示此数据消息是否应该接受优先对待;
▪Ver表示版本:
此字段用来表示L2TP数据消息数据头的版本。
此字段必须置位2,版本1为L2F使用;
▪Length表示长度:
此字段表示L2TP消息的长度,以字节为单位;
▪TunnelID表示隧道ID:
此字段用来表示控制连接的标识符,并且只在本地具有意义。
当将L2TP隧道和L2TP对等设备一起建立起来时,隧道ID就进行交换。
这样发送给L2TP对等设备的分组将使用接收者的隧道ID,而不是发送者的隧道ID;
▪SeesionID表示会话ID:
此字段用来标识位于L2TP隧道内部的会话。
会话ID只在本地具有意义,这样发送给L2TP对等设备的分组将使用接受者的会话ID,而不是发送者的会话ID;
▪Ns表示发送下一个:
此字段包括一个能够标识消息的序列号码的值。
控制消息和数据消息都具有属于它们自己的序列号码状态。
当S位设置时该字段才存在;
▪Nr表示接收下一个:
此字段包括下一个期待的消息的序列号码的值。
当S位设置时该字段才存在;
▪Offset表示偏移量:
只有当O位置为1时,此字段才够使用。
控制消息时O位必须设置为0。
它表示超过L2TP数据头的八位字节的数目,此L2TP数据头是负载数据被期望开始的位置。
在偏移量填充中的数据是没有定义且没有任何意义的。
L2TP数据头在偏移量填充的最后一个八位字节后面结束;
▪Offsetpad表示偏移量填充:
只有偏移量设置为1时,此字段才会出现。
它的大小由偏移量字段表示的值来确定。
注:
1、对于上面标识有(optional)的字段,如果相应的标志位没有设置,那么该字段在L2TP的头部是不存在的。
例如如果L位没有设置,那么在L2TP的头部就不会出现Length字段。
2、对于控制消息,其S位必须进行设置,而数据消息就没有这个要求,因此,L2TP的控制消息采用的是可靠传输,相反数据消息的传输则不一定可靠。
3.5L2TP的控制消息类型
L2TP在L2TP封装过程中使用两种类型的消息:
控制消息和数据隧道消息。
L2TP控制消息负责创建、维护以及终止L2TP隧道。
L2TP数据隧道分组负责用户的PPP数据的真正的传输。
对于发送控制消息和数据消息而言,L2TP使用相同的帧格式。
在帧的头部,有一个类型字段表示该帧为数据消息还是控制消息。
由于在后面章节中隧道和会话建立的过程要使用L2TP的控制消息,因此在这里先列出几种常见的控制消息,具体这些控制消息的意义则不做叙述:
⏹连接控制:
(前面的数字表示控制消息类型值)
0(reserved)(保留)
1(SCCRQ)Start-Control-Connection-Request开始控制连接请求
2(SCCRP)Start-Control-Connection-Reply开始控制连接答复
3(SCCCN)Start-Control-Connection-Connected开始控制连接已连接
4(StopCCN)Stop-Control-Connection-Notification停止控制连接通知
5(reserved)(保留)
6(HELLO)Hello欢迎消息
⏹呼叫控制:
7(OCRQ)Outgoing-Call-Request输出呼叫请求
8(OCRP)Outgoing-Call-Reply输出呼叫答复
9(OCCN)Outgoing-Call-Connected输出呼叫被连接
10(ICRQ)Incoming-Call-Request进入呼叫请求
11(ICRP)Incoming-Call-Reply进入呼叫答复
12(ICCN)Incoming-Call-Connected进入呼叫已连接
13(reserved)(保留)
14(CDN)Call-Disconnect-Notify呼叫断开通知
⏹出错控制:
15(WEN)WAN-Error-Notify广域网错误通知
⏹PPP会话控制:
16(SLI)Set-Link-Info设置连接信息
在发送控制消息时候,L2TP分组后面将紧跟着一个或几个非零的属性值对(AttributeValuePair,AVP)。
使用AVP来定义消息使得L2TP协议未来的扩展变得非常容易。
下一节会详细介绍AVP的帧结构,以及如何使用它来发送控制消息的。
3.6AVP结构
AVP(AttributeValuePair,属性值对)是用来在互用性的基础上尽可能的提高L2TP的可扩展性。
因为所有的控制消息统一使用AVP这样的帧格式,就使得其扩展起来很容易。
所有的AVP的编码格式统一如下
开头的6bits用来描述AVP的一般属性,实际上这6bits中的后4bits也被保留下来做以后的扩展使用。
保留位必须使用0来填充。
收到保留位设置为1的AVP将会被作为一个不认识AVP处理。
M――Mandatory表示强制位。
收到任何强制位设置为1的且不能识别的AVP,则所有和该AVP关联的隧道和会话就必须断开。
相反,对于强制位没有置1的不能识别的AVP,接收方可以忽略不处理。
H――Hidden表示隐藏位。
使用隐藏位用来避免在线路上使用AVP明文传输敏感数据,例如用户密码等。
Length――长度字段包含了整个AVP的长度值。
长度值可以通过6+属性值的长度计算,单位是字节。
其中6就是AVP中的固定部分的长度和,包括M位、H位、保留位,长度字段,属性类型字段的长度总和,因此AVP的最小长度是6。
VendorID――制造商ID:
IANA分配的网络设备制造商的ID号。
任何希望使用自己的L2TP实现的公司可以在该字段填入自己的私用ID,只要保证不合其他厂商的ID号码冲突,并且和IETF的规定ID不冲突就可以了。
注意VendorID总共有16bits长,因此最大的ID号码是65535。
AttributeType――属性类型:
两个字节的属性类型字段标识该AVP的类型。
AttributeValue――属性值:
由长度字段可以确定属性值字段的长度。
如果该字段为空,那么AVP的长度就等于AVP的最小长度6(字节)。
3.7建立L2TP隧道
在LAC和LNS之间所有会话建立之前必须使用控制连接消息建立隧道,此隧道能够把PPP分组从LAC发送到LNS。
建立控制连接包括确认对方身份,确认L2TP版本,分帧以及信道载体。
L2TP使用三次消息交换来建立控制连接,下面就是一个典型的建立隧道的过程。
LAC向LNS发送开始控制连接请求(SCCRQ);
LNS向LAC发送开始控制连接答复(SCCRP);
LAC向LNS发送开始控制连接已连接(SCCCN);
LNS向LAC发送零长度帧ZLB(Zero-LengthBody)。
3.8对L2TP隧道进行认证:
L2TP在控制连接建立过程中使用一种简单可设置的挑战握手认证协议。
如果LAC或者LNS一方需要认证,那么在SCCRQ或是SCCRP控制报文中就会有一项AVP包含挑战消息。
收到这种类型的SCCRQ或者SCCRP的一方必须紧接着分别发送SCCRP或是SCCCN控制报文来响应。
当然如果发出的响应和对端期望的不匹配,隧道就不允许正确建立。
3.9建立L2TP会话
成功建立了隧道以后,现在就要建立独立的L2TP会话。
下图就是如何建立连接的过程。
主机通过标准的模拟电话或者ISDN发起与LAC之间的PPP连接。
LAC接收了此连接,并且建立了数据链路层。
接下来,LAC将部分地对主机进行鉴别。
然后用用户名称来验证是否此用户是VPDN客户机(具体表现为检查所有的VPDN组中配置的域名是否有用户名称中的后缀匹配,比如用户名mp@,LAC在本地查找是否有域包含的VPDN组)。
如果此用户不是VPDN用户,那么就使用本地ISP的用户名称数据库来对此用户进行鉴别,做其他连接。
如果标识用户名称是VPDN用户,那么接下来就要进行建立L2TP会话的操作。
(如果不存在L2TP隧道,那么就要先在LAC和LNS之间建立隧道)。
●LAC发起具有ICRQ消息的L2TP会话;
●LNS接收具有ICRP消息的L2TP会话;
●LAC发送使用ICCN消息建立的L2TP会话;
●LAC向LNS转发用户名称和口令,以完成鉴别过程;
然后,LAC将向LNS转发所有的LCP的协商选项。
LNS跟着建立虚拟访问接口(VirtualAccessInterface),此接口是从虚拟模板接口复制而产生。
此时,用户将完成LNS以及所有其他的LCP协商选项的鉴别。
如果用户不能进行鉴别,那么LNS将向LAC发送断开连接消息。
现在LNS和内部网关的虚拟接口之间就可以传递数据连接级别帧。
3.10虚拟模板接口与虚拟访问接口:
L2TP分组其实就是具有额外的数据头的PPP分组,一旦去除数据头以后PPP分组能够作用,这个就是虚拟访问接口的职责。
虚拟访问接口是由虚拟模板接口动态建立的,虚拟模板接口是一个逻辑接口,其配置就是企业网络提供给所有拨入用户的网络属性,真正工作的是从虚拟模板接口上复制出来的虚拟访问接口。
在LNS上面指定虚拟模板接口后就对其进行配置,以便能够正确产生虚拟访问接口。
3.11L2TP和L2F以及PPTP的比较
L2TP和PPTP的概念非常类似,但是它们的结构却不同。
例如,L2F、PPTP以及L2TP都能提供可靠的消息传递服务。
但是从协议到协议方面来看,这些工作是如何完成的又非常不同。
例如,在PPTP中,控制消息是通过TCP发送的,这就意味着它们的可靠性是由TCP来定义的。
而L2F和L2TP在本身的协议中定义了可靠的传递机制,例如L2TP使用序号SEQUENCE来保证传递的可靠性,其中控制消息的帧中必须包含该字段。
用来从LAC向LNS发送LCP以及鉴别消息的机制是他们之间的区别的又一个例子。
L2F和L2TP都允许在建立会话的过程中发送LCP以及鉴别消息,而PPTP却不具有此能力。
这就意味着,如果出现了任何LCP协商,那么PPTP服务器就需要在它本身和远程计算机之间重新协商LCP.
L2TP从PPTP而不是从L2F继承特性的最好的例子是输出呼叫。
在L2F内部不存在任何建立输出呼叫的结构。
而L2TP和PPTP都具有建立输出呼叫的能力。
第4章.调试命令及调试信息
配置L2TP隧道后,要观察L2TP隧道建立和报文的收发情况,可以利用L2TP显示和调试命令。
⏹VPDN显示命令如下:
showvpdndetail
显示信息
解释
LNS(MaxTun300,MaxSes600):
TUNNELS:
LocIDLocNameRemID
7lac8
RemNameRemAddr
lns21.1.1.1
PortSessState
17011ESTAB
SESSIONS:
LocIDTunIDIfNameState
87serial2/0ESTAB
MaxTun为在L2TP设置的最大隧道数,目前是300;
MaxSes为在L2TP设置的最大会话数,目前是600;
TUNNELS显示当前在VPDN设备上建立的L2TP隧道情况,显示项目有本地隧道ID,本地VPDN设备所用的主机名,远程对等VPDN设备使用的主机名以及IP地址,本地使用UDP端口号,隧道所拥有的会话数,隧道当前状态。
SESSIONS显示当前在VPDN设备上建立的L2TP会话情况,显示项目有本地会话ID,会话所属隧道ID,本地会话接口名,会话当前状态。
⏹L2TP调试命令如下:
debugl2tp显示所有L2TP的调试信息
debugl2tpdata调试L2TP的数据信息
debugl2tpdetail调试L2TP的细节信息
debugl2tpevent调试L2TP的事件信息
debugl2tppacket调试L2TP的报文
使用命令debugl2tpevent从用户拨入到会话建立的L2TP事件调试信息打印如下表:
调试信息
解释
L2TP:
CreateSessionID39.State0calltypeLACIN
L2TP:
Newtunnel7createforremote,peerip21.1.1.1
L2TP:
OSCCRQHost-NamelacAssign-TunId7Challengefc59f76785ddfd5385fef72f82089080Vendor-Namemp
L2TP:
Tunnel7statechangefromidletowait-ctl-reply
L2TP:
AddSession39toTunnel7
L2TP:
ISCCRPHost-NamelnsAssign-TunId10Vendor-NamempChallenge55a3aee8f4b8b9acc9ee22b5befa67e0Challenge-Resp66b2251698ffe73093f8e5466e4ef57b
L2TP:
OSCCCNChallenge-Resp9072b82ec3accb43a1cf5705090a153a
L2TP:
Tunnel7statechangefromwait-ctl-replytoestablished
L2TP:
%LINEPROTO-5-UPDOWN:
LineprotocolonInterfaceTunnel7changedstatetoup
L2TP:
Session39statechangefromidletowait-for-tunnel
L2TP:
OICRQSession-Id39
L2TP:
Session39statechangefromwait-for-tunneltowait-reply
L2TP:
IICRPSession-Id50
L2TP:
OICCN
L2TP:
Session39statechangefromwait-replytoestablished
L2TP:
IZLB
LAC收到远程用户的拨叫,经过部分鉴别,创建会话,ID为39
由于在对等设备之间不存在隧道,因此创建新的隧道,ID为7,对端ip地址为21.1.1.1
LAC发送SCCRQ开始准备建立隧道。
隧道ID为上面创建的7,同时送上挑战信息,厂商名称:
MP。
LAC发送SCCRQ后创建的隧道(7)状态由idle改变为WAIT-CTL-REPLY。
同时将会话39加入隧道7中。
收到对端设备发出的SCCRP,其中包括以AVP帧发送过来的对方的隧道ID,厂商名称,挑战响应。
LAC收到SCCRP后立即发送SCCCN,表示隧道控制连接已经建立。
控制连接建立,刚才创建的隧道7状态就由WAIT-CTL-REPLY转到ESTABLISHED.
隧道7准备就绪。
会话39的状态由IDLE转为WAIT-FOR-TUNNEL,等待在隧道7上输入呼叫。
LAC发送ICRQ,同时送上本地的会话ID39。
同时会话39的状态由WAIT-FOR-TUNNEL转为WAIT-REPLY。
等待对端对呼叫响应。
LAC收到对端设备发送的ICRP,同时收到对端的会话ID为50。
LAC立即响应,发送ICCN,至此会话已经建立。
会话39的状态也由WAIT-REPLY转为ESTABLISHED.
隧道和会话的建立就绪,收到对端的控制消息已经交换完毕的确认消息ZLB。
注:
3、以上分析的是LAC上接收和发送控制消息的过程,LNS接收和发送刚好相反。
4、I=IN表示接收到该消息,O=OUT表示发送该消息。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- L2TP 技术