- 数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPP over Ethernet)协议。
- PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器上。PPPoE具有适用范围广、安全性高、计费方便等特点。
?DSL应用场景
- 数字用户线路DSL是以电话线为传输介质的传输技术。?
- DSL是一种利用现有电话网络实现数据通信的宽带技术。在使用DSL接入网络时,用户侧会安装调制解调器,然后通过现有的电话线与数字用户线路接入复用器(DSLAM)相连。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备。
- 然后,DSLAM通过高速ATM网络或者以太网将用户的数据流量转发给宽带远程接入服务器(BRAS)。BRAS是面向宽带网络应用的接入网关,位于骨干网的边缘层。
PPPoE在DSL中的应用
- ?运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
- PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
- PPPoE技术解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并被广泛应用。
PPPoE报文?
?
- PPPoE报文是使用Ethernet格式来进行封装的。
- PPPoE报文是使用Ethernet格式进行封装的,Ethernet中各字段解释如下:
1.
DMAC
:表示目的设备的
MAC
地址,通常为以太网单播目的地址或者以太网广播地址(
0xFFFFFFFF
)。
2.
SMAC
:表示源设备的以太网
MAC
地址。
3.
Type
:表示协议类型字段,当值为
0x8863
时表示承载的是
PPPoE
发现阶段的报文。当值为
0x8864
时表示承载的是
PPPoE
会话阶段的报文。
l
PPPoE
字段中的各个字段解释如下:
1.
VER
:表示
PPPoE
版本号,值为
0x01
。
2.
Type
:表示类型,值为
0x01
。
3.
Code
:表示
PPPoE
报文类型,不同取值标识不同的
PPPoE
报文类型。
4.
PPPoE
会话
ID
,与以太网
SMAC
和
DMAC
一起定义了一个
PPPoE
会话。
5.
Length
:表示
PPPoE
报文的
Payload
长度,不包括以太网头部和
PPPoE
头部的长度。
PPPoE会话建立过程?
- PPPoE可分为三个阶段,即发现阶段、会话阶段和会话终结阶段。
PPPoE协议报文?
?
- ?PPPoE通过这五种类型的报文来建立和终结PPPoE会话。
1.
PADI
(
PPPoE Active Discovery Initiation
)报文
:用户主机发起的
PPPoE
服务器探测报文,目的
MAC
地址为广播地址。
2.
PADO
(
PPPoE Active Discovery
Offer
)报文
:
PPPoE
服务器收到
PADI
报文之后的回应报文,目的
MAC
地址为客户端主机的
MAC
地址。
3.
PADR
(
PPPoE Active Discovery Request
)报文
:用户主机收到
PPPoE
服务器回应的
PADO
报文后,单播发起的请求报文,目的地址为此用户选定的那个
PPPoE
服务器的
MAC
地址。
4.
PADS
(
PPPoE Active Discovery Session Configuration
)报文
:
PPPoE
服务器分配一个唯一的会话进程
ID
,并通过
PADS
报文发送给主机。
5.
PADT
(
PPPoE Active Discovery Terminate
)报文
:当用户或者服务器需要终止会话时,可以发送这种
PADT
报文
。
PPPoE发现阶段?
?
- ?客户端通过广播发送PADI报文来发现接入服务器。
- 在发现阶段,PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息。在PADI报文中,目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000。所有PPPoE服务器收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较。
?
- 所有的PPPoE 服务器在收到PADI报文之后,将客户端请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复PADO报文。?
- 如果服务器可以提供客户端请求的服务,就会回复一个PADO报文。客户端(RTA)可能会收到多个PPPoE服务器发送的PADO报文。在PADO报文中,目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000。
?
- PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并单播发送一个PADR报文。?
- 因为PPPoE客户端是以广播的形式发送PADI报文,所以客户端可能会收到多个PADO报文。在接收到的所有PADO报文中,PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并发送一个PADR报文给这个服务器。在PADR报文中,目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000。?
?
- 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会话阶段。
PPPoE会话阶段
?
- PPPoE会话上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
- PPPoE会话的PPP协商成功后,就可以传输PPP数据。
- PPPoE会话阶段可分为两部分:PPP协商阶段和PPP报文传输阶段。
1.
PPPoE Session
上的
PPP
协商和普通的
PPP
协商方式一致,分为
LCP
、认证、
NCP
三个阶段。
LCP
阶段主要完成建立、配置和检测数据链路连接。
LCP
协商成功后,开始进行认证,认证协议类型由
LCP
协商结果决定。认证成功后,
PPP
进入
NCP
阶段,
NCP
是一个协议族,用于配置不同的网络层协议,常用的是
IP
控制协议(
IPCP
),它负责配置用户的
IP
地址和
DNS
服务器地址等。
2.
PPPoE Session
的
PPP
协商成功后,就可以承载
PPP
数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的
Session ID
并保持不变。
?
PPPoE会话终结?
- PADT报文用于通知对端PPPoE会话结束。?
- 当PPPOE客户端希望关闭连接时,可以向PPPOE服务器端发送一个PADT报文。同样,如果PPPOE服务器端希望关闭连接时,也可以向PPPOE客户端发送一个PADT报文,此报文用于关闭连接。
- 在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后,连接随即关闭。
PPPoE会话建立过程
?
?
- 用户客户端向服务器发送一个PADI报文,开始PPPOE接入。
- 服务器向客户端发送PADO报文。
- 客户端根据回应,发起PADR请求给服务器。
- 服务器产生一个Session ID,通过PADS发给客户端。
- 客户端和服务器之间进行PPP的LCP协商,建立链路层通信。同时,协商使用CHAP认证方式。
- 服务器通过Challenge报文发送给认证客户端,提供一个128bit的Challenge。
- 客户端收到Challenge报文后,并将密码和Challenge做MD5算法运算后,在Response回应报文中把结果发送给服务器。
- 服务器根据用户发送的信息判断用户是否合法,然后回应认证成功/失败报文,将认证结果返回给客户端。
- 进行NCP(如IPCP)协商,通过服务器获取到规划的IP地址等参数。
PPPoE配置
?
?
[RTA]dialer-rule
[RTA-dialer-rule]dialer-rule 1 ip permit
[RTA-dialer-rule]quit
[RTA]interface dialer 1
[RTA-Dialer1]dialer user enterprise
[RTA-Dialer1]dialer-group 1
[RTA-Dialer1]dialer bundle 1
[RTA-Dialer1]ppp chap user enterprise@huawei
[RTA-Dialer1]ppp chap password cipher huawei123
[RTA-Dialer1]ip address ppp-negotiate
- PPPoE客户端配置包括三个步骤
- 首先需要配置一个拨号接口
- dialer-rule命令用于进入Dialer-rule视图,在该视图下,可以通过拨号规则来配置发起PPPoE会话的条件
- interface dialer number命令用来创建并进入Dialer接口
- dialer user user-name命令用于配置对端用户名,这个用户名必须与对端服务器上的PPP用户名相同
- dialer-group group-number命令用来将接口置于一个拨号访问组。
- dialer bundle?number命令用来指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来。
- 第二个步骤是在接口上将Dialer Bundle和接口绑定:
- pppoe-client dial-bundle-number number命令来实现Dialer Bundle和物理接口的绑定,用来指定PPPoE会话对应的Dialer Bundle,其中number是与PPPoE会话相对应的Dialer Bundle编号。on-demand表示PPPoE会话工作在按需拨号模式。AR2200支持报文触发方式的按需拨号。目前ARG3系列路由器支持的按需拨号方式为报文触发方式,即当物理线路Up后,设备不会立即发起PPPoE呼叫,只有当有数据需要传送时,设备才会发起PPPoE呼叫,建立PPPoE会话。
- 第三个步骤是配置一条缺省静态路由,该路由允许在路由表中没有相应匹配表项的流量都能通过拨号接口发起PPPoE会话。
?配置验证
<RTA>display interface Dialer 1
Dialer1 current state: UP
Line protocol current state: UP (spoofing)
Description: HUAWEI, AR Series, Dialer1 Interface
Route Port, The Maximum Transmit Unit is 1500, Hold timer is 10(sec)
Internet Address is negotiated, 192.168.10.254/32
Link layer protocol is PPP
LCP initial
Physical is Dialer
Bound to Dialer1:0:
Dialer1:0 current state : UP
Line protocol current state : UP
Link layer protocol is PPP
LCP opened, IPCP opened
- display interface dialer[?number?]命令用于查看拨号接口的配置,便于定位拨号接口的故障。
- LCP opened, IPCP opened表示链路的状态完全正常。
?
- display pppoe-client session summary命令用于查看PPPoE客户端的PPPoE会话状态和统计信息。
- 本节给出了两个例子来说明不同的PPPoE会话状态。
- ID表示PPPoE会话ID,Bundle ID和Dialer ID的值与拨号参数配置有关。
- Intf表示客户端侧协商时的物理接口。
- State表示PPPoE会话的状态,包括以下四种:
1.??
IDLE
表示当前会话
状态为空闲
。
2.??
PADI
表示
PPPoE
会话处于
发现
阶段,并已经发送
PADI
报文。
3.??
PADR
表示
PPPoE
会话处于
发现
阶段,并已经发送
PADR
报文。
4.??
UP
表示
PPPoE
会话建立成功。
本章总结
问:PPPoE帧为什么要降低MTU大小?
答:以太网中默认最大支持1500字节的有效载荷。PPPoE头部长度为6字节,PPP协议ID长度为2字节,所以PPPoE帧中的MTU不能超过1492字节。
问:在配置PPPoE时, dialer bundle命令的作用是什么?
答:dialer bundle命令用来指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来。
?