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协议在更广范围内应用的补充性协议。
![](https://img.haomeiwen.com/i14225700/8c01c87b95a64032.png)
3.DSL应用场景
![](https://img.haomeiwen.com/i14225700/5095b96744e06444.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报文
![](https://img.haomeiwen.com/i14225700/7e447d3e62a898d0.png)
各个字段解释如下:
![](https://img.haomeiwen.com/i14225700/a9489daf9da1e8c0.png)
- PPPoE报文是使用Etherner格式来进行封装的。
5.PPPoE会话建立过程
介绍PPPoE的实现原理。
PPPoE协议采用Client/Server方式,它将PPP报文封装在以太网帧之内,在以太网上提供点对点的连接。
PPPoE可分为三个阶段,即Discovery阶段(发现阶段)、Session阶段(会话阶段)、Terminate阶段(会话终结阶段)。
![](https://img.haomeiwen.com/i14225700/cf6ec22ccfcaeb27.png)
![](https://img.haomeiwen.com/i14225700/ff44048bde5afa38.png)
![](https://img.haomeiwen.com/i14225700/ababafafb26918d5.png)
Discovery阶段为PPPoE认证的PPPoE协商阶段,由四个过程组成。
![](https://img.haomeiwen.com/i14225700/de5f68f7e218d45f.png)
![](https://img.haomeiwen.com/i14225700/4197a1a6155c1485.png)
PPPoE Client广播发送一个PADI(PPPoE Active Discovery Initial)报文,在此报文中包含PPPoE Client想要得到的服务类型信息。
![](https://img.haomeiwen.com/i14225700/e8c8837744aaef90.png)
所有的PPPoE Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO(PPPoE Active Discovery Offer)报文。
![](https://img.haomeiwen.com/i14225700/00433846d70a0a29.png)
根据网络的拓扑结构,PPPoE Client可能收到多个PPPoE Server发送的PADO报文,PPPoE Client选择最先收到的PADO报文对应的PPPoE Server做为自己的PPPoE Server,并单播发送一个PADR(PPPoE Active Discovery Request)报文。
![](https://img.haomeiwen.com/i14225700/99462ddd0727f093.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配置
实验环境:
![](https://img.haomeiwen.com/i14225700/b109d41f884b3a1f.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
![](https://img.haomeiwen.com/i14225700/00236137ff1e52e7.png)
当拨号成功的时候 物理层面以及协议层面都是up的,lcp和ipcp都是opened的。
2.display pppoe-client session summary——查看PPPoE客户端的PPPoE会话状态和统计信息。
display pppoe-client session summary
![](https://img.haomeiwen.com/i14225700/a599b936cada6cb2.png)
![](https://img.haomeiwen.com/i14225700/53beb73b889f5fb6.png)
State是IDLE时PPPoE是没有拨号成功的,UP时就说明拨号成功了。
网友评论