PPP模块问题定位方法
PPP协议及工作原理介绍
图1-1 PPP的帧格式
1. PPP的帧结构
Flag域标识了一物理帧的起始及结束,FCS域为帧校验域。而真正属于PPP报文内容的为Address、Control、Protocol、Information域所包含内容。 注意,这里的说法并不是很准确,它的实际意思是指在协议栈处理中低层交给PPP的包文内容已经去掉了Flag域与FCS域,但在关于PPP报文字节数统计中应算上这些字节数(关于这一点,在LQR协议中曾明确提到)。Address域表示此为PPP广播地址,Address、 Control域(地址控制域)一起表示了此报文为PPP报文,即PPP报文头为FF03; Protocol为协议域;Information为信息域。其中,地址控制域可以被压缩(实际上具体压缩是将这两个域省略,是否压缩通过两端协商来决定);协议域也可被压缩(由两个字节压缩成一个字节,如IP类型为0X0021,可压缩为0X21,是否压缩通过两端协商来决定),协议域实际上就是协议类型,用来区分PPP包文中各种不同的包文,如LCP、IPCP等。信息域的内容格式,随包文类型而不同,上面的图示主要指LCP、IPCP等协商包文的信息域格式,网络层包文的信息域没有这种格式,直接就是包文内容。
Code域表明了此报文为哪种PPP协商报文。Identifier域标志协商包文的唯一性,用于进行协商报文的识别与匹配。Length域为此协商报文长度(包含Code及Identifier域)。Data域所包含的为协商报文内容。Type为协商选项类型,其后的Length为此协商选项长度(包含Type域),紧接着的Data域为协商选项具体内容(这里叫做value,描述起来更方便些)。协商包文中的Data域一般由一系列TLV组成。
2. PPP在建立链路之前要进行一系列的协商过程:
(1) 在开始建立PPP链路时,先进入到Establish阶段。
(2) 在Establish阶段PPP链路进行LCP协商,协商内容包括:MRU(最大接收单元)、魔术字(magic number)、验证方式、异步字符映射、协议域和地址控制域压缩等选项(详见RFC1661)。LCP在协商成功后进入Opened状态,表示底层链路已经建立。
(3) 如果配置了验证(远端验证本地或者本地验证远端)则进入Authenticate阶段,开始CHAP或PAP验证。如果验证失败进入Terminate阶段,拆除链路,LCP状态转为Down;如果验证成功就进入Network协商阶段(NCP),此时LCP状态仍为Opened,而IPCP状态从Initial转到Request
(4) 验证通过后才会进入网络协商阶段(NCP),如进行IPCP、IPXCP、BCP、OSICP等的协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。
(5) PPP链路将一直保持通信,直至有明确的LCP或NCP帧关闭这条链路,或发生了某些外部事件(例如,用户的干预)。
需要注意的是:
(1) 任何阶段的协商失败都将导致链路的拆除。如果PPP发送的Echo Request报文产生丢失,则认为线路出现故障,在连续丢失最大允许丢失的个数之后,PPP将链路复位,以免过多的无效数据传输。
(2) 由于在PPP的一系列协商和验证过程中,任何一个阶段的协商或验证不通过,都会导致链路的拆除,所以可能引起PPP链路故障的因素也很多。
(3) 异步字符映射用于同异步转换,当PPP从异步端口接收到报文时,要将异步报文转换为同步报文;当向异步端口发送报文时,要将同步报文转换为异步报文。
PPP运行过程可参见下图。
PPP运行流程图
PPP协商过程可参见下图。
PPP协商流程图
MP协议及工作原理介绍:
为了增加带宽,可以将多个PPP链路捆绑使用,称为MultiLink PPP,简称MP。MP允许将报文分片,分片将通过多条点对点链路发送到同一个目的地。MP能在任何支持PPP封装的接口下工作,如串口、ISDN的BRI/PRI接口等,也包括PPPoX(PPPoE、PPPoA、PPPoFR等)这类的虚拟接口,建议用户尽可能将同一类的接口捆绑使用,不要将不同类的接口捆绑使用。
MP方式下接口工作进程如下(以虚拟接口模板下的MP为例):
(1) 首先和对端进行LCP协商,协商过程中,除了协商一般的LCP参数外,还验证对端接口是否也工作在MP方式下。
(2) 如果对端不工作在MP方式下,则LCP协商成功后,直接进入下一步的验证(若配置了PAP或CHAP验证)或NCP协商步骤,不进行MP捆绑。通过验证之后,PPP可以得到对方的用户名。
(3) 如果对端也工作在MP方式下,则根据用户名找到为该用户指定的虚拟接口模板,并以该虚拟模板的各项NCP参数(如IP地址等)进行NCP协商,物理接口配置的NCP参数不起作用。
NCP协商通过后,即可建立MP链路,用更大的带宽传输数据。
MP的配置主要有两种方式,一种是通过虚拟模板接口(Virtual-Template),一种是利用MP-Group接口。
问题定位思路:
PPP作为数据链路层协议,需要由物理层提供数据收发服务,并为网络层提供数据报文的封装,网络层参数的协商等功能。因此利用PPP来解决设备问题时,也
应该主要从以下几个方面入手:
(1) 物理层问题分析
(2) LCP问题的分析
(3) 验证问题的分析
(4) IPCP问题的分析
此外,如果能够阅读PPP报文,了解PPP协商所处的阶段以及PPP报文的协商过程,问题一般可得到满意的解决。
在处理设备故障时,我们需要下面这两个debugging开关:
(1) debugging ppp all interface interface-type interface-num
(2) debugging physical all interface interface-type interface-num
1. 物理层问题分析
(1) 问题描述
设备表现为广域网接口无法正常使用。
(2) 问题定位及解决过程
首先应该从物理层开始检查。
使用display interface命令查看接口信息,例如执行命令display interface bri 0/0(BRI接口 0/0)或display interface serial 0/0(串口 0/0)。
根据显示信息中的“硬件设备的状态”和“LCP的状态”判断物理层是否正常。
(3) 举例
以H3C AR28-11路由器为例:
[Router]display interface Serial 0/0
Serial0/0 current state :UP
Line protocol current state :UP
Description : Serial0/0 Interface
The Maximum Transmit Unit is 1500, Hold timer is 10(sec)
Internet Address is 1.1.1.1/24
Link layer protocol is PPP
LCP opened, IPCP opened, OSICP stopped
Output queue : (Urgent queuing : Size/Length/Discards) 0/50/0
Output queue : (Protocol queuing : Size/Length/Discards) 0/500/0
Output queue : (FIFO queuing : Size/Length/Discards) 0/75/0
Physical layer is synchronous,
Interface is DTE, Cable type is V24
Last clearing of counters: 16:27:03 UTC Fri 10/14/2005
Last 300 seconds input rate 1.62 bytes/sec, 13 bits/sec, 0.03 packets/sec
Last 300 seconds output rate 1.62 bytes/sec, 13 bits/sec, 0.03 packets/sec
Input: 21 packets, 632 bytes
0 broadcasts, 0 multicasts
0 errors, 0 runts, 0 giants
0 CRC, 0 align errors, 0 overruns
0 dribbles, 0 aborts, 0 no buffers
0 frame errors
Output:21 packets, 632 bytes
0 errors, 0 underruns, 0 collisions
0 deferred
DCD=UP DTR=UP DSR=UP RTS=UP CTS=UP
Serial0/0 is up,表明物理层状态UP,此外Serial0/0可能为down、administratively down、standby,其中down说明物理层工作异常,应检查物理层配置及设备问题。administratively down,说明物理层被人为关闭。此时可以执行undo shutdown命令手工打开此端口。 standby是在使用接口备份功能,备份接口的一种状态,也表示接口物理层不可用。
LCP状态也表明了物理层是否向链路层上报lowerup消息,从PPP状态转移图可知。
如果物理层未发送lowerup,PPP未发送open消息,则LCP应处于initial状态;如果物理层发送了lowerup,PPP已发送open消息和CONFREQ报文,则LCP应处于req-send状态;如果物理层发送了lowerup,PPP已发送open消息、CONFREQ报文和CONFACK报文,则LCP应处于ACKSENT状态;如果物理层发送了lowerup,PPP未发送 open消息,则LCP应处于starting状态。如物理层未通,应先查找物理层未通的原因。
2. LCP问题的分析
(1) 问题描述
执行命令display interface bri 0/0(BRI接口0/0)或display interface serial1/0(串口 1/0),如显示LCP协议未进入OPENED状态,可以考虑为LCP的问题。
(2) 问题定位及解决过程
此方面的问题一般较少出现,如出现应该打开debugging ppp lcp packet或debugging ppp lcp state,首先检查物理接口的报文收发是否正常,如果确认接口的报文收发正常,并且有大量的CONFNAK、CONFREJ报文出现,或者出现TERMACK、CODEREJ、PROTREJ之类的报文,可以说明是协商的问题,再根据报文协商项内容分析无法协商成功的原因。
3. 验证问题的分析
(1) 问题描述
使用display interface命令查看接口信息,如显示LCP协议进入OPENED状态,而IPCP依然为Initial状态,或者LCP变为OPENED状态后又很快重新开始协商,可考虑为验证的问题。
(2) 问题定位及解决过程
由于此状态为临时状态,不易观察,也可通过debugging ppp all来观察。如果成功协商了验证,PPP会打印出PAP或CHAP验证的报文,如果验证失败,会打印出“PPP authentication failed”信息,可以根据报文的具体内容分析验证失败的原因。有时配置了验证,但是LCP协商过程中该协商项被拒绝,LCP进入OPENED状态会立即重新协商,此时若通过debugging ppp lcp all观察,可以看到对端未通过验证的提示信息,例如:
*0.22570109 H3C PPP/8/debug2
PPP Packet:
Serial0/0 Input LCP(c021) Pkt, Len 12
State acksent, code ConfRej(04), id 4d, len 8
AuthProto(3), len 4, PAP c023
4. IPCP问题的分析
(1) 问题描述
使用display interface命令查看接口信息,如果显示LCP协议进入OPENED状态,而IPCP处于reqsent或ackrcvd,并观察PPP报文有大量的IPCP报文收发,可说明路由器IPCP协商有问题。若IPCP处于STOPPED状态,也可能是收到IPCP的TERMREQ或CODEREJ导致状态迁移。
(2) 问题定位及解决过程
阅读IPCP报文,可分析出问题原因。由于IPCP必须协商的参数为IP地址,其他为可选择参数,一般来说是IP地址配置有问题,无法进行IPCP协商。此时应给两端接口配置IP地址,此外如果是访问Internet网,可不配置IP地址,但应该配置IP address negotiate。
5. 其他问题一
(1) 问题描述
如LCP、IPCP均已经进入OPENED状态,但是Ping报文无法互通。
(2) 问题定位及解决过程
可以考虑是路由的原因,采用直接ping对端接口的IP地址:
如果能够互通,证明PPP对IP报文的封装情况正常。
如果依然有问题,但LCP和IPCP始终处于OPENED状态,可以考虑是否链路误码率较高,此情况比较少见。
6. 其他问题二
(1) 问题描述
路由器上配置了AAA之后,LCP和IPCP均已经进入OPENED状态。但是如果配置了计费,设备很快又重新开始LCP;如果没有设置计费服务器,AAA会将PPP链路挂断。
(2) 问题定位及解决过程
如果要使用AAA,又不需要计费,可以配置accounting optional,允许不计费使用。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作