PPPoE原理与配置方法

一、PPPoE原理

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

1.1 DSL简介

  • 数字用户线路DSL是以电话线为传输介质的传输技术。

在这里插入图片描述
DSL是一种利用现有电话网络实现数据通信的宽带技术。在使用DSL接入网络时,用户侧会安装调制解调器,然后通过现有的电话线与数字用户线路接入复用器(DSLAM)相连。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备。
然后,DSLAM通过高速ATM网络或者以太网将用户的数据流量转发给宽带远程接入服务器(BRAS)。BRAS是面向宽带网络应用的接入网关,位于骨干网的边缘层。

1.2 PPPoE在DSL中的应用

在这里插入图片描述
运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。PPPoE技术解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并被广泛应用。

1.3 PPPoE报文

  • PPPoE报文是使用Ethernet格式来进行封装的。

在这里插入图片描述

字段释义
DMAC表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)
SMAC表示源设备的以太网MAC地址
Type表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文
  • PPPoE字段中的各个字段解释如下:
字段释义
VER表示PPPoE版本号,值为0x01
Type表示类型,值为0x01
Code表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型
Sessions IDPPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话
Length表示PPPoE报文的Payload长度,不包括以太网头部和PPPoE头部的长度

1.4 PPPoE会话建立过程

PPPoE可分为三个阶段,即发现阶段、会话阶段和会话终结阶段。
在这里插入图片描述
PPPoE会话过程使用的报文:

  • PADI(PPPoE Active Discovery Initiation)报文:用户主机发起的PPPoE服务器探测报文,目的MAC地址为广播地址。
  • PADO(PPPoE Active Discovery Offer)报文:PPPoE服务器收到PADI报文之后的回应报文,目的MAC地址为客户端主机的MAC地址。
  • PADR(PPPoE Active Discovery Request)报文:用户主机收到PPPoE服务器回应的PADO报文后,单播发起的请求报文,目的地址为此用户选定的那个PPPoE服务器的MAC地址。
  • PADS(PPPoE Active Discovery Session Configuration)报文:PPPoE服务器分配一个唯一的会话进程ID,并通过PADS报文发送给主机。
  • PADT(PPPoE Active Discovery Terminate)报文:当用户或者服务器需要终止会话时,可以发送这种PADT报文。

在这里插入图片描述

  1. 用户客户端向服务器发送一个PADI报文,开始PPPOE接入。
  2. 服务器向客户端发送PADO报文。
  3. 客户端根据回应,发起PADR请求给服务器。
  4. 服务器产生一个Session ID,通过PADS发给客户端。
  5. 客户端和服务器之间进行PPP的LCP协商,建立链路层通信。同时,协商使用CHAP认证方式。
  6. 服务器通过Challenge报文发送给认证客户端,提供一个128bit的Challenge。
  7. 客户端收到Challenge报文后,并将密码和Challenge做MD5算法运算后,在Response回应报文中把结果发送给服务器。
  8. 服务器根据用户发送的信息判断用户是否合法,然后回应认证成功/失败报文,将认证结果返回给客户端。
  9. 进行NCP(如IPCP)协商,通过服务器获取到规划的IP地址等参数。

1.4.1 PPPoE发现阶段

Step:One
  • 客户端通过广播发送PADI报文来发现接入服务器。
    在这里插入图片描述
    在发现阶段,PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息。在PADI报文中,目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000。所有PPPoE服务器收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较。
Step:two
  • 所有的PPPoE 服务器在收到PADI报文之后,将客户端请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复PADO报文。

在这里插入图片描述
如果服务器可以提供客户端请求的服务,就会回复一个PADO报文。客户端(RTA)可能会收到多个PPPoE服务器发送的PADO报文。在PADO报文中,目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000。

Step:Three
  • PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并单播发送一个PADR报文。
  • 在这里插入图片描述
    因为PPPoE客户端是以广播的形式发送PADI报文,所以客户端可能会收到多个PADO报文。在接收到的所有PADO报文中,PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并发送一个PADR报文给这个服务器。在PADR报文中,目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000。
Step:Four
  • PPPoE服务器生成唯一的PPPoE Session ID,并发送PADS报文给客户端,会话建立成功。

在这里插入图片描述
PPPoE服务器收到PADR报文后,会生成一个唯一的Session ID来标识和PPPoE客户端的会话,并通过一个PADS报文把Session ID发送给PPPoE客户端。在PADS报文中,目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器为本PPPoE会话产生的Session ID。会话建立成功后,PPPoE客户端和服务器进入PPPoE会话阶段。

1.4.2 PPPoE会话阶段

  • PPPoE会话上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
  • PPPoE会话的PPP协商成功后,就可以传输PPP数据。
    在这里插入图片描述
  1. PPPoE会话阶段可分为两部分:PPP协商阶段和PPP报文传输阶段。
    PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。LCP阶段主要完成建立、配置和检测数据链路连接。LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果决定。认证成功后,PPP进入NCP阶段,NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP地址和DNS服务器地址等。
  2. PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的Session ID并保持不变。

1.4.3 PPPoE会话终结

  • PADT报文用于通知对端PPPoE会话结束。
    在这里插入图片描述
    当PPPOE客户端希望关闭连接时,可以向PPPOE服务器端发送一个PADT报文。同样,如果PPPOE服务器端希望关闭连接时,也可以向PPPOE客户端发送一个PADT报文,此报文用于关闭连接。
    在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后,连接随即关闭。

二、PPPoE配置方法

实验拓扑:
在这里插入图片描述
PPPoE-Service:

<Huawei>system-view
[Huawei]sysname  PPPoE-Service
[PPPoE-Service]ip pool pppoe
[PPPoE-Service-ip-pool-pppoe]network 192.168.1.0 mask 255.255.255.0
[PPPoE-Service-ip-pool-pppoe]gateway-list 192.168.1.1 
[PPPoE-Service-ip-pool-pppoe]quit
[PPPoE-Service]interface Virtual-Template 1
[PPPoE-Service-Virtual-Template1]ppp authentication-mode pap
[PPPoE-Service-Virtual-Template1]remote address pool pppoe
[PPPoE-Service-Virtual-Template1]ppp ipcp default-route
[PPPoE-Service-Virtual-Template1]ppp ipcp dns 8.8.8.8
[PPPoE-Service-Virtual-Template1]ip address 192.168.1.1 255.255.255.0
[PPPoE-Service-Virtual-Template1]quit
[PPPoE-Service]aaa
[PPPoE-Service-aaa]local-user pppoe password cipher 123456
[PPPoE-Service-aaa] local-user pppoe service-type ppp
[PPPoE-Service]interface GigabitEthernet 0/0/0
[PPPoE-Service-GigabitEthernet0/0/0]pppoe-server bind Virtual-Template 1
[PPPoE-Service-GigabitEthernet0/0/0]quit
[PPPoE-Service]interface LoopBack 0    # 模拟ISP外网
[PPPoE-Service-LoopBack0]ip address 172.16.1.1 255.255.255.255 
[PPPoE-Service-LoopBack0]quit
[PPPoE-Service]ip route-static 192.168.2.1 255.255.255.0 GigabitEthernet 0/0/0

PPPoE-Client:

<Huawei>system-view
[Huawei]sysname  PPPoE-Clienct
[PPPoE-Client]dialer-rule      #进入dialer-rule视图
[PPPoE-Client-dialer-rule]dialer-rule 1 ip permit #允许ip流量触发拨号
[PPPoE-Client-dialer-rule]quit
[PPPoE-Client]interface Dialer 1 # 创建一个用于拨号的虚接口
[PPPoE-Client-Dialer1]link-protocol ppp
[PPPoE-Client-Dialer1]ppp pap local-user pppoe password cipher 123456
[PPPoE-Client-Dialer1] ip address ppp-negotiate
[PPPoE-Client-Dialer1] mtu 1492
[PPPoE-Client-Dialer1] dialer user pppoe
[PPPoE-Client-Dialer1] dialer bundle 1
[PPPoE-Client-Dialer1] dialer-group 1
[PPPoE-Client-Dialer1]quit
[PPPoE-Client]interface GigabitEthernet 0/0/0
[PPPoE-Client-GigabitEthernet0/0/0]pppoe-client dial-bundle-number 1
[PPPoE-Client-GigabitEthernet0/0/0]quit
[PPPoE-Client]interface GigabitEthernet 0/0/1
[PPPoE-Client-GigabitEthernet0/0/1]ip address 192.168.2.1 255.255.255.0
[PPPoE-Client-GigabitEthernet0/0/1]dhcp select interface
[PPPoE-Client-GigabitEthernet0/0/1]dhcp server lease day 3
[PPPoE-Client-GigabitEthernet0/0/1]dhcp server dns-list 8.8.8.8
[PPPoE-Client-GigabitEthernet0/0/1]quit
[PPPoE-Client]ip route-static 0.0.0.0 0.0.0.0 Dialer 1

实验结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值