资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
www.xahztx.comL2TP协议原理一.L2TP协议结构图1-1 L2TP协议结构图3-4描述了PPP帧和控制通道以及数据通道之间的关系:PPP帧在不可靠的L2TP数据通道内传输,控制消息在可靠的L2TP控制通道内传输。L2TP数据报文和控制报文全部以UDP报文形式发送。数据消息不重发,不能保证可靠性;控制消息使用流控和重发机制,能保证可靠传输。L2TP注册了UDP端口1701,这个端口号仅用于初始隧道建立过程。L2TP隧道发起方任选一个空闲端口(未必是1701)向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲端口(未必是1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道连通的时间内不再改变。二.L2TP报文头L2TP的控制消息和数据消息使用相同的报文头。图1-2 L2TP报文头格式L2TP报文头中标记为可选(opt)的字段,是指在数据消息中可选,在控制消息中则是必选的。表1-1 L2TP报文头字段描述字段名含义取值要求T类型(Type),取值为“0”时表示数据消息,取值为“1”时表示控制消息L长度在位标志,取值为“1”时表示报文头中存在长度字段Length控制消息中必须为“1”x保留位S顺序字段在位标志,取值为“1”时表示报文头中存在Ns和Nr字段控制消息中必须为“1”O取值为“1”时表示报文头中存在offset size字段控制消息中必须为“0”P优先级(Priority),只用于数据消息控制消息中必须为“0”Ver版本号对于L2TPv2协议取值为“2”Length消息的总长度,单位为字节Tunnel ID隧道标识符,只具有本地意义Hello控制消息具有全局性,其Tunnel ID必须为0。Session ID会话标识符,只具有本地意义Ns当前消息的顺序号Nr希望接收的下一条控制消息的顺序号数据消息中是保留字段offset size偏移值,指示载荷数据开始的位置offset padding填充位L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,隧道标识符与会话标识符由对端分配,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一条隧道上。三.L2TP数据报文结构用户PPP报文(已携带源IP报文头及PPP报文头)在公共网络上以IP报文形式传输时携带以下协议头:l 1个L2TP报文头(16字节)l 1个UDP报文头(8字节)l 1个新IP报文头(20字节),指示L2TP隧道的源地址和目的地址L2TP数据报文的格式如图3-6。图1-3 L2TP数据报文的格式LAC收到PPP报文后,进行如下封装:l 首先为其封装L2TP报文头;l 接着封装UDP报文头l 然后封装新的IP头,并从连接公共网络的接口发送出去。L2TP协议本身没有数据分片功能,但是在进行IP封装时,可以在需要时进行分片。为保证报文不分片,封装后的报文大小不能超过实际接口的MTU。LNS从连接公共网络的接口收到该报文后,进行如下处理:l 去掉IP头和UDP头,将报文送往L2TP协议模块;l L2TP协议剥离L2TP协议头和PPP头,将该报文还原为用户IP报文,并发送到私网内部服务器。四.控制连接和会话连接的建立过程消息报文在VRP的实现中,控制连接和会话连接的建立过程中涉及的消息包括:1.SCCRQ(Start-Control-Connection-Request):用来向对端请求建立控制连接。2.SCCRP(Start-Control-Connection-Reply):用来告诉对端,本端收到了对端的ACCRQ消息,允许建立控制连接。3.SCCCN(Start-Control-Connection-Connected):用来告诉对端,本端收到了对端的SCCRP消息,本端已完成隧道的建立。4.StopCCN(Stop-Control-Connection-Notification):用来通知对端拆除控制连接,本端已清除所有会话连接,将关闭隧道接口。StopCCN中携带了发送端控制连接拆除原因。5.ICRQ(Incoming-Call-Request):只有LAC才会发送;每当检测到用户的呼叫请求,LAC就发送ICRQ消息给LNS,请求建立会话连接。ICRQ中携带会话参数。6.ICRP(Incoming-Call-Reply):只有LNS才会发送;收到LAC的ICRQ,LNS就使用ICRP回复,表示允许建立会话连接。7.ICCN(Incoming-Call-Connected):只有LAC才会发送;LAC收到LNS的ICRP,就使用ICCN回复,表示LAC已回复用户的呼叫,通知LNS建立会话连接。8.CDN(Call-Disconnect-Notify):用来通知对端拆除会话连接,并告知对端拆除的原因。9.Hello:用来检测隧道的连通性。10.ZLB(Zero-Length Body):如果本端的队列没有要发送的消息时,发送ZLB给对端。在会话连接和控制连接的拆除过程中,发送ZLB还表示收到StopCCN或CDN。ZLB只有L2TP头,没有负载部分,因此而得名。控制连接的建立和拆除期间包含以下过程:1.控制连接的建立2.会话连接的建立3.控制连接的维持4.会话连接的拆除5.控制连接的拆除控制连接的建立控制连接的建立先于会话连接。只有控制连接建立起来了,会话连接才可能建立起来。L2TP的控制连接建立过程如图3-7。图1-4 控制连接建立的三次握手1. LAC和LNS之间路由相互可达后,LAC端设置相应AVP,向LNS端发出SCCRQ报文,请求建立控制连接。2. LNS收到来自LAC的SCCRQ。根据其中的AVP,如果同意建立隧道,便发送SCCRP报文给LAC。3. LAC对接收到的SCCRP报文进行检查,从中取出隧道信息,并向LNS发送SCCCN报文,表示控制连接建立成功。4. 当消息队列中没有消息时,LNS发送ZLB给对端。在VRP中,使用display l2tp tunnel命令可以查看本设备上成功建立了哪些控制连接。会话连接的建立控制连接成功建立之后,一旦检测到用户呼叫,就请求建立会话连接。与控制连接不同的是,会话连接的建立具有方向性。在VRP中,会话连接请求是由LAC发起的。会话连接建立过程如图3-8。图1-5 会话连接建立过程L2TP的会话建立由PPP触发。在VRP中,使用display l2tp session命令可以查看本设备上成功建立了哪些会话连接。控制连接的维持L2TP使用Hello报文检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,则重复发送Hello报文。如果重复发送报文的次数超过3次,则认为L2TP隧道已经断开,该PPP会话将被清除。此时需要重新建立隧道。VRP中Hello报文发送的时间间隔可以手工设置。缺省情况下,Hello报文每隔60秒发送一次。LNS和LAC侧可以设置不同的Hello报文时间间隔。会话连接的拆除会话连接拆除的发起端可以是LAC或LNS。发起端通过发送CDN消息报文到对端来通知对端拆除会话连接。对端收到后发送ZLB ACK消息作为回应。图3-9是LAC侧发起会话连接拆除的过程。图1-6 L2TP会话连接的拆除控制连接的拆除控制连接拆除的发起端可以是LAC或LNS。发起端通过发送StopCCN消息报文到对端来通知对端拆除控制连接。对端收到后发送ZLB ACK消息作为回应,同时在一定时间内保持控制连接以防止ZLB ACK消息丢失。图3-10是LAC侧发起控制连接拆除的过程。图1-7 L2TP控制连接的拆除五.隧道验证过程隧道验证是和建立隧道同时进行的,不是单独进行的。隧道验证过程如下:1.首先LAC向LNS发SCCRQ请求消息时,产生一个随机的字符串作为本端的CHAP Challenge(SCCRQ携带的字段)发给LNS。2.LNS收到SCCRQ后,利用SCCRQ携带的CHAP Challenge和本端配置的密码产生一个新的字符串,用MD5算出一个16个字节的Response;同时也产生一个随机的字符串(LNS Challenge),将Response和LNS Challenge放在SCCRP中一起发给LAC。3.LAC端收到SCCRP后,对LNS进行验证: 利用自己的CHAP Challenge、本端配置的密码、SCCRP,产生一个新的字符串; 用MD5算出一个16字节的字符串; 与LNS端发来的SCCRP中带的LNS CHAP Response做比较,如果相同,则隧道验证通过,否则隧道验证不通过,断掉隧道连接。4.如果验证通过,LAC将自己的CHAP Response放在SCCCN消息中发给LNS。5.LNS收到SCCCN消息后,也进行验证: 利用本端的CHAP Challenge、本端配置的密码、SCCCN,得到一个字符串; 然后用MD5算出一个16字节的字符串; 与SCCCN消息中得到的LAC CHAP Response做比较。如果相同,则验证通过,否则拆除隧道。六.L2TP隧道会话的建立过程L2TP的典型组网如图3-11所示:图1-8 L2TP隧道的典型组网示意图进行隧道验证的L2TP隧道呼叫建立流程如图3-12。图1-9 L2TP隧道的呼叫建立流程1. 用户端PC机发起呼叫连接请求;2. PC机和LAC端(RouterA)进行PPP LCP协商;3. LAC对PC机提供的用户信息进行PAP或CHAP认证;4. LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证;5. RADIUS服务器认证该用户,如果认证通过则返回该用户对应的LNS地址等相关信息,并且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对用户的认证方式LNS可对用户进行两次验证:第一次发生在LAC侧,第二次发生在LNS侧。只有一种情况LNS侧不对接入用户进行二次验证:启用LCP重协商后,不在相应的虚拟接口模板上配置验证。这时,用户只在LAC侧接受一次验证。其他情况都进行二次验证,验证模式(Authent
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号