前言
数字用户线路DSL(DigitalSubscriberLine)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为xDSL,X代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPPoverEthernet)协议。PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器上。PPPoE具有适用范围广、安全性高、计费方便等特点。
DSLAM:数字用户线路接入复用器
BRAS:宽带远程接入服务器
定义
PPPoE(PPP over Ethernet)协议是一种把PPP帧封装到以太网帧中的链路层协议。PPPoE可以使以太网网络中的多台主机连接到远端的宽带接入服务器。
目的
运营商希望把一个站点上的多台主机连接到同一台远程接入设备,同时接入设备能够提供与拨号上网类似的访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
PPPoE报文格式
PPPoE报文是使用Ethernet格式进行封装的,Ethernet中各字段解释如下:
- DMAC:表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)。
- SMAC:表示源设备的以太网MAC地址。
- Type:表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文。
PPPoE字段中的各个字段解释如下: - VER:表示PPPoE版本号,值为0x01。
- Type:表示类型,值为0x01。
- Code:表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型。
- PPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话。
- Length:表示PPPoE报文的Payload长度,不包括以太网头部和PPPoE头部的长度。
PPPoE拨号的工作原理
PPPoE拨号可分为三个阶段,即Discovery阶段、Session阶段和Terminate阶段。
- 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报文。
建立过程:
- 用户客户端向服务器发送一个PADI报文,开始PPPOE接入。(广播)
- 服务器向客户端发送PADO报文。(单播)
- 客户端根据回应,发起PADR请求给服务器。(最先,单播)
- 服务器产生一个Session ID,通过PADS发给客户端。(完成之后通信双方都会知道PPPoE的Session_ID以及对方的以太网地址,它们共同确定了唯一的PPPoE Session。)
- 客户端和服务器之间进行PPP的LCP协商,建立链路层通信。同时,协商使用CHAP认证方式。
- 服务器通过Challenge报文发送给认证客户端,提供一个128bit的Challenge。
- 客户端收到Challenge报文后,并将密码和Challenge做MD5算法运算后,在Response回应报文中把结果发送给服务器。
- 服务器根据用户发送的信息判断用户是否合法,然后回应认证成功/失败报文,将认证结果返回给客户端。
- 进行NCP(如IPCP)协商,通过服务器获取到规划的IP地址等参数。
配置
·clent配置
acl number 3002
rule 5 permit ip source 192.168.10.0 0.0.0.255
#
interface Dialer1
link-protocol ppp
ppp chap user user1@system
ppp chap password cipher lxf123
ip address ppp-negotiate
dialer user user2
dialer bundle 1
nat outbound 3002
#
interface GigabitEthernet0/0/0
pppoe-client dial-bundle-number 1
#
ip route-static 0.0.0.0 0.0.0.0 Dialer1
#
return
·server配置
ip pool pool1
gateway-list 192.168.10.1
network 192.168.10.0 mask 255.255.255.0
#
aaa
authentication-scheme system_a
authorization-scheme system_a
domain system
authentication-scheme system_a
authorization-scheme system_a
local-user user1@system password cipher lxf123
local-user user1@system privilege level 0
local-user user1@system service-type ppp
#
interface Virtual-Template1
ppp authentication-mode chap domain system
remote address pool pool1
ppp keepalive retry-times 2
ppp ipcp dns 10.10.10.10 10.10.10.11
timer hold 30
ip address 192.168.10.1 255.255.255.0
#
interface GigabitEthernet0/0/0
pppoe-server bind Virtual-Template 1
#
return