PPPoE原理配置

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协议在更广范围内应用的补充性协议。

PPPoE原理配置_第1张图片
image.png

3.DSL应用场景
PPPoE原理配置_第2张图片
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中的应用
    PPPoE原理配置_第3张图片
    image.png
4.PPPoE报文
PPPoE原理配置_第4张图片
image.png

各个字段解释如下:

PPPoE原理配置_第5张图片
image.png
  • PPPoE报文是使用Etherner格式来进行封装的。
5.PPPoE会话建立过程

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

PPPoE原理配置_第6张图片
image.png

PPPoE原理配置_第7张图片
image.png
PPPoE原理配置_第8张图片
image.png

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

PPPoE原理配置_第9张图片
image.png

PPPoE原理配置_第10张图片
image.png

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

PPPoE原理配置_第11张图片
image.png

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

PPPoE原理配置_第12张图片
image.png

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

PPPoE原理配置_第13张图片
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协商的基本过程

    PPPoE原理配置_第14张图片
    image.png

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

    PPPoE原理配置_第15张图片
    image.png

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

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

    PPPoE原理配置_第16张图片
    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的基本协商流程如图

    PPPoE原理配置_第17张图片
    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配置

实验环境:


PPPoE原理配置_第18张图片
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

PPPoE原理配置_第19张图片
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原理配置)