叉包舍 - PPPoE之常见拨号错误代码及处理

来源:互联网 发布:深入浅出node.js epub 编辑:程序博客网 时间:2024/05/16 11:51
pppoe用户拨号上线过程可以分为pppoe发现阶段和ppp的会话两个阶段;678,676报错发生在pppoe发现阶段,691错误发生在ppp会话阶段。


  1、678错误,一般是二层不通所致,根本原因就是拨号器在发送了padi之后,未收到BAS回应的pado;




  2、676错误,有可能是BAS上存在限制,也有可能跟二层不通有关,根本原因就是拨号器在发送了padr之后,未收到BAS回应的pads;


  (1)676常见场景一:


  ME60上配置了ppp connection chasten 5 60 300,假设60秒内某用户拨号失败5次,接下来300秒内BAS不再响应请求,拨号失败错误代码为676。此机制是为了避免用户一直持续的拨号,防止网络上非法用户使用穷举法试探正常用户的口令,属于ME60的安全措施;




  (2)676常见场景二:


  BAS的mac地址在二层汇聚设备上的对应vlan中漂移至非上行口的其他端口;


  BAS的mac地址正常情况下是学习在上行口的。如果某vlan内存在用户模拟网关(BAS)持续发包,网关(BAS)的mac将不会再学习在上行口,而学习至用户侧端口。由于padi是广播,所以拨号器的padi可以正常送给BAS,BAS回应的pado,携带自己的mac为源,拨号器mac为目的,单播也能正常到达拨号器;但是之后拨号器的padr,携带自己的mac为源,BAS的mac为目的,二层转发的时候,到达发生mac漂移的汇聚设备,通过目的mac查表会被抓发至另一用户侧端口,以致padr无法正常到达BAS,拨号器自然也无法收到pads,报错676;






  3、691错误发生时,可以肯定的是拨号器与BAS之间二层网络是通的,只有用户在认证过程中发生了问题;


  (1)691常见场景一:拨号客户端输入的用户名密码错误;




  (2)691常见场景二:用户账号的radius上挂死;特别注意的是跨板eth-trunk场景下上线的用户,如果用户精绑定的方式不是根据内/外层标签,而是以NAS-Port(5)属性实现的,就要注意在eth-trunk下配置nas logic-port参数。防止用户上线radius记录的nas-port信息与下线时上报的不一致,导致在radius上挂死;




  (3)691一种特殊场景:


  bas子接口上配置的接入域与上用户线携带的域名不一致,BAS会直接以域拒绝回应拨号器的认证请求,会报错691。


  比如上线用户携带的域名和pppoe,但是在用户上线的接口下配置了permit-domain  <domain name>,但是域名并非pppoe。




   




 处理过程: (1)676常见场景一故障处理:


 用户侧拨号,使用错误的用户名/密码连续拨号,会报5次691错误,第6次就上报676了;等待300s后,再按照上述顺序尝试,现象依旧;此现象属于ME60上的保护机制,只需跟客户解释清楚即可;




 (2)676常见场景二故障处理:


 1、在ME60上根据用户mac来trace access-user,发现并未收到用户侧发送的padr消息;


 2、二层逐台设备查询ME60的mac地址,发现在汇聚交换机上被学习至了另外一个下行口;


 3、最终发现汇聚交换机下挂某OLT的其中一个ONU下也学到了ME60的mac地址,怀疑是用户模拟网关发包导致;


 4、关闭此ONU,在汇聚交换机上ME60的mac地址学习到上行口,业务恢复正常。




 (3)691一种特殊的场景故障处理:


 1、在ME60上根据用户mac来trace access-user,发现用户上线过程中,还未开始认证,就直接被域拒绝了;


 2、在ME60上检查domain和bas接口的配置,发现domain无问题,bas接口下配置了permit-domain 允许用户接入的域,而trace消息中用户携带的域并非配置的permit-domain ;


 3、在bas接口下删除permit-domain 配置,或者加上用户上线时携带的域名,问题解决。


 建议与总结: 用户pppoe拨号的时候最常见的就是678,676,691三种错误,从原理上分析都比较简单,但涉及的场景可能有多种,处理类似故障最有效的手段就是trace用户mac和display aaa online-fail-record,定位用户上线失败的原因。再根据具体原因到设备上或者二层网络中去查找问题
0 0