目录
PPPoE (Point to Point Protocol over Ethernet) 基于以太网的点对点协议
PPPoE (Point to Point Protocol over Ethernet) 基于以太网的点对点协议
运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
前言
数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPP over Ethernet)协议。
PPPaE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器上。PPPoE具有适用范围广、安全性高、计费方便等特点。
DSL应用场景
DSL是一种利用现有电话网络实现数据通信的宽带技术。在使用DSL接入网络时,用户侧会安装调制解调器,然后通过现有的电话线与数字用户线路接入复用器(DSLAM)相连。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备。
然后,DSLAM通过高速ATM网络或者以太网将用户的数据流量转发给宽带远程接入服务器(BRAS)。BRAS是面向宽带网络应用的接入网关,位于骨干网的边缘层。
PPPoE在DSL中的应用
运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
PPPoE技术解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并被广泛应用。
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可分为三个阶段,即发现阶段、会话阶段和会话终结阶段。
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报文。
PPPoE发现阶段
在发现阶段,PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息。在PADI报文中,目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000。所有PPPoE服务器收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较。
如果服务器可以提供客户端请求的服务,就会回复一个PADO报文。客户端(RTA)可能会收到多个PPPoE服务器发送的PADO报文。在PADO报文中,目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000。
因为PPPoE客户端是以广播的形式发送PADI报文,所以客户端可能会收到多个PADO报文。在接收到的所有PADO报文中,PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并发送一个PADR报文给这个服务器。在PADR报文中,目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000。
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报文传输阶段。
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。LCP阶段主要完成建立、配置和检测数据链路连接。LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果决定。认证成功后,PPP进入NCP阶段,NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP地址和DNS服务器地址等。
PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的Session ID并保持不变。
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配置
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会话。
配置验证
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会话建立成功。
总结
1.以太网中默认最大支持1500字节的有效载荷。PPPoE头部长度为6字节,PPP协议ID长度为2字节,所以PPPoE帧中的MTU不能超过1492字节。
2.dialer bundle命令用来指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来。
华为HCIA基础实验 - PPPoE & eNSP
PPPoE 实验
PPPoE是ppp over EthnerII 的技术,将PPP报文封装进以太网中进行传输,因为ISP即需要一台设备连接多个客户终端(以太网和交换机最合适),又需要对用户进行控制,如计费、认证等(PPP协议最适合),所以因为有需求所以产生技术,这就是pppoe产生的价值所在,市场决定需,需求求决定技术。
PPPoE是一种C/S构架,分为服务端和客户端。典型应用就是xDSL技术,代表有ADSL技术,就是拨号上网技术,使用modem进行的拨号上网技术。
PPPoE 分为2个阶段,discovery发现阶段和session会话阶段。
一、discovery阶段,是进行pppoe的发现和响应阶段。
二、session阶段,是进行ppp链路建立的阶段
本实验只能使用 eNSP中 AR 系统的路由器做
PPPoE服务器端 R1 的配置
配置思路:
1、Virtual-Template虚拟模板接口的配置:
为了让同为L2层协议的以太网承载ppp,那么就需要配置vt虚拟模板(Virtual-Template),VT模板就是为了让一条链路上可以封装多种同层协议的虚拟接口。因为现在的以太网物理接口已经默认封装了以太网协议,无法再封装其他的wan协议了,所以才需要vt来模拟一个(WAN)ppp接口,然后封装其他协议如ppp,最后在把vt绑定到物理接口,实现ppp和以太网协议的嵌套。
需要在VT虚拟接口中,来配置ppp协议,要在vt接口中配置ppp的认证、加密方式、ipcp协商等
2、配置ppp的其他选项,如为pppoe客户端分配的ip地址、dns、网关以及用于ppp认证的用户名和密码
3、配置好以上两步后,最后就需要把vt虚拟接口和连接pppoe客户端的物理以太网接口绑定,完成pppoe协议的封装。
配置 VT 及ppp的各种参数
R1:
undo ter mo
sy
sys R1
==========
首先配置用于给客户端分配ip地址的地址池“pppoe”
给客户端分配的网关
给客户端分配的ip地址的范围
进入aaa本地用户数据库
定义用于ppp认证的用户名“huawei”和密码
定义用户“huawei”的用途是做ppp认证的
ip pool pppoe
network 192.168.12.0 mask 255.255.255.0
gateway-list 192.168.12.1
aaa
local-user huawei password cipher huawei
local-user huawei service-type ppp
==========
创建 VT
创建vt接口编号随意,这里是1
设置本端vt接口的ip地址为 192.168.12.1
为远程pppoe客户端分配ip池“pppoe”中的ip地址
定义ppp采用chap方式认证
inter Virtual-Template 1
ip address 192.168.12.1 24
remote address pool pppoe
ppp authentication-mode chap
将物理接口与VT虚拟接口进行绑定,实现pppoe协议的封装
int g0/0/0
pppoe-server bind Virtual-Template 1
ip route-static 0.0.0.0 0 Virtual-Template 1
PC ping 测试的时候,要有回去的路由
==========
PPPoE客户端的配置 R2
配置思路:
1、DCC(拨号控制中心)虚拟拨号接口(dialer)的配置,就是专门用来控制拨号的接口,在这个接口下配置封装协议、ppp认证、ip地址自动获得、dialer接口拨号使用的用户名、pppoe连接建立的等待时间、dialer所属的组、指定dialer接口的编号(这个编号是用来和物理接口绑定时候用到的编号)、nat地址转换等等的配置,都在是该拨号接口下完成的。
2、用于控制pppoe客户端按需拨号的拨号规则,如定义哪些流量允许进行pppoe拨号连接。这一步只有当pppoe客户端是按需拨号时候才需要配置,如果是永久链接的pppoe,无需配置拨号规则dialer-rule。
3、配置好以上两步后,最后就需要把DCC的dialer虚拟接口和连接pppoe服务端的物理以太网接口绑定,完成pppoe协议,并且修改物理接口的MTU=1492Byte(因为正常的以太网帧=1500Byte,但是pppoe的头部+ppp的头部=6+2=8byte,所以该物理接口以太网帧的MTU就应改为1500-8=1492Byte大小,防止该帧加上以太网头部后超过1500Byte)
4、添加默认路由指向dialer接口,以及其他的配置,如为pc主机分配的dhcp地址池、使用nat让pc主机上网等的配置。
DCC虚拟拨号接口dialer的配置
R2:
undo ter mo
sy
sys R2
==========
配置拨号规则dialer-rule
进入dialer-rule视图,用来匹配允许pppoe拨号连接的流量
在条目1中定义允许所有ip报文进行pppoe拨号连接
dialer-rule
dialer-rule 1 ip permit
quit
创建DCC的dialer 1 接口
封装ppp协议
设置pppoe客户端自动获取ip地址
配置ppp的chap认证
指定dialer接口拨号所使用的用户,与ppp认证用户一致
指定dialer 1 接口的编号(用于和物理接口绑定)
dialer接口加入dialer-group中(每个dialer只能加入一个组)
int Dialer 1
link-protocol ppp
ip address ppp-negotiate
ppp chap user huawei
ppp chap password cipher huawei
dialer user huawei
dialer bundle 1
dialer-group 1
物理接口与dialer接口绑定,并修改mtu=1492Byte
int g0/0/0
pppoe-client dial-bundle-number 1 on-demand
mtu 1492
添加默认路由指向dialer接口
ip route-static 0.0.0.0 0 Dialer 1
==========
为pc主机分配的dhcp地址池。
dhcp enable
int g0/0/1
ip address 192.168.1.1 24
dhcp select interface
==========
验证:
R2 ping 192.168.12.1 这是按需的,需要有请求才会拨号
ping的pppoe服务器的ip地址,证明pppoe拨号成功
在pppoe-client R2 上验证, 接口状态为 up
display pppoe-client session summary
display ip interface brief, pppoe-client获取到ip
==========
在pppoe-server R1 上验证
display pppoe-server session all ,有 remmac
display access-user ,pppoe-client的MAC
在PC1上验证:
下面是PC1上面的测试结果,看到已经分配到ip地址、网关、并且可以进行pppoe拨号上网。
ping的pppoe服务器的ip地址,证明pppoe拨号成功
PC>ping 192.168.12.1