美文网首页
PPPoE原理配置

PPPoE原理配置

作者: 稀泡泡 | 来源:发表于2019-10-16 16:48 被阅读0次
    1.前言

    数字用户线路 DSL(Digital Subscriber Line)是以电话线为传输介质的传输数字信号的技术,人们通常把所有的DSL技术统称为XDSL,X代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是 PPPoE( PPP over Ethernet)协议。
    PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器上。 PPPOE具有适用范围广安全性高、计费方便等特点。

    2.简介

    定义
    PPP(Point-to-Point Protocol)协议是一种在点到点链路上传输、封装网络层数据包的数据链路层协议。由于它能够提供用户认证、易于扩充,并且支持同/异步通信,因而获得广泛应用。

    PPPoE(PPP over Ethernet)属于链路层协议,主要功能是在以太网上提供点到点的连接,建立PPP会话,以及封装PPP数据包的方法,是PPP协议在更广范围内应用的补充性协议。

    image.png
    3.DSL应用场景
    image.png
    • 数字用户线路DSL是以电话线为传输介质的传输技术。
    • DSLAM:DSLAM是Digital Subscriber Line Access Multiplexer的简称,中文称呼数字用户线路接入复用器。DSLAM是各种DSL系统的局端设备属于最后一公里接入设备(the last mile),其功能是接纳所有的DSL线路,汇聚流量,相当于一个二层交换机。
    • BRAS:宽带远程接入服务器(Broadband Remote Access Server,简称BRAS)是面向宽带网络应用的新型接入网关,它位于骨干网的边缘层,可以完成用户带宽的IP/ATM网的数据接入(目前接入手段主要基于xDSL/Cable Modem/高速以太网技术(LAN)/无线宽带数据接入(WLAN)等),实现商业楼宇及小区住户的宽带上网、基于IPSec(IP Security Protocol)的IP VPN服务、构建企业内部Intranet、支持ISP向用户批发业务等应用。
      PPPoE在DSL中的应用
      image.png
    4.PPPoE报文
    image.png

    各个字段解释如下:

    image.png
    • PPPoE报文是使用Etherner格式来进行封装的。
    5.PPPoE会话建立过程

    介绍PPPoE的实现原理。
    PPPoE协议采用Client/Server方式,它将PPP报文封装在以太网帧之内,在以太网上提供点对点的连接。
    PPPoE可分为三个阶段,即Discovery阶段(发现阶段)、Session阶段(会话阶段)、Terminate阶段(会话终结阶段)

    image.png image.png image.png

    Discovery阶段为PPPoE认证的PPPoE协商阶段,由四个过程组成。

    image.png
    image.png

    PPPoE Client广播发送一个PADI(PPPoE Active Discovery Initial)报文,在此报文中包含PPPoE Client想要得到的服务类型信息。

    image.png

    所有的PPPoE Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO(PPPoE Active Discovery Offer)报文。

    image.png

    根据网络的拓扑结构,PPPoE Client可能收到多个PPPoE Server发送的PADO报文,PPPoE Client选择最先收到的PADO报文对应的PPPoE Server做为自己的PPPoE Server,并单播发送一个PADR(PPPoE Active Discovery Request)报文。

    image.png

    PPPoE Server产生一个唯一的会话ID(Session ID),标识和PPPoE Client的这个会话,通过发送一个PADS(PPPoE Active Discovery Session-confirmation)报文把会话ID发送给PPPoE Client,会话建立成功后便进入PPPoE Session阶段。

    完成之后通信双方都会知道PPPoE的Session_ID以及对方以太网地址,它们共同确定了唯一的PPPoE Session。

    Session阶段

    PPPoE Discovery阶段的工作为PPPoE Client和PPPoE Server之间建立了Session,之后PPPoE便进入到Session阶段,Session阶段可划分为两部分,一是PPPoE认证的PPP协商阶段,二是PPP报文传输阶段。

    PPPoE认证过程中的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。

    • LCP协商
      LCP协商阶段主要完成建立、配置和检测数据链路连接。LCP协商的过程如下:协商双方互相发送一个Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则双方会继续发送Config-Request报文,直到对端回应了Config-ACK报文为止。
      LCP协商的基本过程

      image.png
    • 认证阶段
      LCP协商成功后,开始进行认证工作,认证协议类型由LCP协商结果(CHAP或者PAP)决定。
      PAP验证过程
      PAP验证协议为两次握手验证,口令为明文。
      PAP验证的过程如图

      image.png
    • PPPoE Client把本地用户名和口令发送到PPPoE Server。

    • PPPoE Server根据本地用户表查看是否有PPPoE Client的用户名
      若有,则查看口令是否正确,若口令正确,则认证通过;若口令不正确,则认证失败。
      若没有,则认证失败。
      CHAP验证过程
      CHAP验证协议为三次握手验证协议,它在网络上采用加密形式传输用户密码,因此安全性要比PAP高。
      CHAP的验证过程如图

      image.png
    • PPPoE Server主动发起验证请求,PPPoE Server向PPPoE Client发送一些随机产生的报文(Challenge)。

    • PPPoE Client接到PPPoE Server的验证请求后,利用报文ID、CHAP密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回PPPoE Server(Response)。

    • PPPoE Server用自己保存的PPPoE Client密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败。
      CHAP与PAP验证过程对比

    • PAP认证中,口令以明文方式在链路上发送,完成PPP链路建立后,PPPoE Client会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以安全性不高。当实际应用过程中,对安全性要求不高时,可以采用PAP认证建立PPP连接。

    • CHAP认证中,验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性比PAP认证高。当实际应用过程中,对安全性要求较高时,可以采用CHAP认证建立PPP连接。
      NCP阶段

    • 认证成功后,PPP进入NCP阶段。NCP阶段的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。

    • NCP协商支持多种协议,如IPCP协议、BCP协议,最为常用的是IPCP协议。PPPoE用户主要通过IPCP来获取访问网络的IP地址或IP地址段。

    • IPCP的协商过程是基于PPP状态机进行协商的。经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial (或closed)状态变为Opened状态。IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认包文。

    • IPCP协商过程中,协商包文可包含多个选项,即参数。各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

    • NCP协商流程与LCP协商流程类似,协商双方互相发送NCP报文,并且互相回应Ack报文后,标志NCP己协商完,用户上线成功,可以正常访问网络了。
      NCP的基本协商流程如图

      image.png
    • PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。在PPPoE Session阶段所有的以太网数据包都是单播发送的。
      Terminate阶段

    • PPP通信双方应该使用PPP协议自身来结束PPPoE会话,但在无法使用PPP协议结束会话时可以使用PADT(PPPoE Active Discovery Terminate)报文。

    • 进入PPPoE Session阶段后,PPPoE Client和PPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接。PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了。

    6.PPPoE配置

    实验环境:


    image.png

    服务器端

    [AR2]ip pool pppoe    //创建一个名为pppoe的地址池。因为服务器要分配地址,所以需要配置ip地址池
    Info: It's successful to create an IP address pool. 
    [AR2-ip-pool-pppoe]network 10.1.1.0 mask 24     //配置分配的ip地址的范围
    [AR2-ip-pool-pppoe]gateway-list 10.1.1.2      //配置分配的网关
    [AR2-ip-pool-pppoe]q
    [AR2]aaa
    [AR2-aaa]local-user pppoe password cipher ppp    //配置用于PPP认证的用户名密码
    Info: Add a new user.
    [AR2-aaa]local-user pppe service-type ppp    //配置用户用于ppp认证
    Info: Add a new user.
    [AR2-aaa]q
    [AR2]
    [AR2]interface Virtual-Template 1    //创建一个虚拟接口“1”
    [AR2-Virtual-Template1]ip add 10.1.1.2 24   //本端vt接口的ip地址为10.1.1.2
    [AR2-Virtual-Template1]remote address pool pppoe       //为远程pppoe客户端分配ip地址池“pppoe”中的ip地址    
    [AR2-Virtual-Template1]ppp authentication-mode chap     //配置PPP认证为chap
    [AR2-Virtual-Template1]dis this 
    [V200R003C00]
    #
    interface Virtual-Template1
     ppp authentication-mode chap 
     remote address pool pppoe
     ip address 10.1.1.2 255.255.255.0 
    #
    return
    [AR2-Virtual-Template1]q
    [AR2]interface GigabitEthernet 0/0/0
    [AR2-GigabitEthernet0/0/0]pppoe-server bind virtual-template 1  
    [AR2-GigabitEthernet0/0/0]dis this
    [V200R003C00]
    #
    interface GigabitEthernet0/0/0
     pppoe-server bind Virtual-Template 1    //将物理接口与VT虚拟接口进行绑定,实现pppoe协议的封装
    #
    return
    [AR2-GigabitEthernet0/0/0]q
    [AR2]
    

    客户端

    [AR1]
    [AR1]dialer-rule    
    [AR1-dialer-rule]dialer-rule 10 ip permit         //配置什么样的流量才可以触发pppoe的拨号
    [AR1-Dialer1]interface Dialer 1        //创建一个dialer口,实际上就是一个ppp接口
    [AR1-Dialer1]link-protocol ppp    //配置dialer1口的协议为PPP
    [AR1-Dialer1]ip address ppp-negotiate         //ip地址通过ppp协商阶段获得
    [AR1-Dialer1]ppp chap user pppoe          //服务器会做chap认证:用户名
    [AR1-Dialer1]ppp chap password simple ppp     // //服务器会做chap认证:密码
    [AR1-Dialer1]dialer user pppoe      //这里的用户名“pppoe”必须和服务器配置的用户名密码数据库中的用户名保持一致   
    [AR1-Dialer1]dialer-group  10        //这里“10”需要和前面“dialer-rule 10 ip permit ”中的数字保持一致
    [AR1-Dialer1]dialer bundle 2      //dialer必须要和具体的一个以太口绑定,绑定的号就是bundle后面的数字
    [AR1-Dialer1]q
    [AR1]
    [AR1]interface GigabitEthernet 0/0/0      //具体发起pppoe拨号的以太口
    [AR1-GigabitEthernet0/0/0]pppoe-client dial-bundle-number 2 on-demand     //这里的"2"要和前面bundle后面的数字保持一致。on-demand 是需要通过pppoe传送数据包的时候进行拨号连接(有流量发就拨号没流量发就不拨号)
    [AR1-GigabitEthernet0/0/0]q
    [AR1]ip route-static 0.0.0.0 0 Dialer 1   //配置缺省路由,在数据包向外发送的时候都从 dialer 1口往出发
    [AR1]interface Dialer 1
    [AR1-Dialer1]dis this     //查看dialer口的配置
    [V200R003C00]
    #
    interface Dialer1
     link-protocol ppp
     ppp chap user pppoe
     ppp chap password simple ppp
     ip address ppp-negotiate
     dialer user pppoe
     dialer bundle 2
     dialer-group 10
    #
    return
    [AR1-Dialer1]q
    [AR1]
    
    

    如果不配置on-demand(有流量拨号没流量不拨号)的话直接undo掉这些命令就可以

    1.pppoe-client dial-bundle-number 2 on-demand 
    2.dialer-rule   
    3.dialer-rule 10 ip permit 
    4.dialer-group  10  
    

    配置验证:
    1.display interface Dialer 1——查看拨号接口的配置

    display interface Dialer 1
    
    image.png
    当拨号成功的时候 物理层面以及协议层面都是up的,lcp和ipcp都是opened的。
    2.display pppoe-client session summary——查看PPPoE客户端的PPPoE会话状态和统计信息。
    display pppoe-client session summary
    
    image.png
    image.png

    State是IDLE时PPPoE是没有拨号成功的,UP时就说明拨号成功了。

    相关文章

      网友评论

          本文标题:PPPoE原理配置

          本文链接:https://www.haomeiwen.com/subject/mbmjmctx.html