【31】PPPoE理论和基本实施

PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器。PPPoE具备适用范围广、安全性高、计费方便等特点。目前比较流行的宽带接入方式ADSL(DSL,数字用户线路;xDSL,x表示不同种类的数字用户线路技术),ADSL是非对称DSL技术,使用的是PPPoE协议。

  1. PPPoE报文
    PPPoE报文使用Ethernet格式来进行封装
    PPPoE报文
    1.1 Type
    表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文。
    1.2 PPPoE字段中的各个字段解释如下
  • Ver:表示PPPoE版本号,值为0x01。
  • Type:表示类型,值为0x01。
  • Code:表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型。
  • Session ID:PPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话。
  • Length:表示PPPoE报文的Payload长度,不包括以太网头部和PPPoE头部的长度。
    1.3 PPPoE协议报文
  • PADI:发现初始报文。目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000
  • PADO:发现提供报文。目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000
  • PADR:发现请求报文。目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000
  • PADS:发现会话确认报文。目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器为本PPPoE会话产生的Session ID
  • PADT:发现终止报文。目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID
    1.4 PPPoE会话建立过程
  • 发现阶段:获取对方以太网地址,以及确定唯一的PPPoE会话
  • 会话阶段:包含两部分,ppp协商阶段和ppp报文传输阶段(LCP、认证、NCP)
  • 会话终结阶段:会话建立以后的任意时刻,发送报文结束PPPoE会话
    【客户端】通过广播发送PADI报文来发现接入服务器 --> 所有PPPoE【服务器】收到PADI报文后,将客户端请求的服务与自己能够提供的服务进行比较,如果可以提供服务,则回复PADO报文 --> PPPoE【客户端】最先收到的PADO报文对应的PPPoE服务器,并单播发送一个PADR报文 --> PPPoE【服务器】生成唯一的会话ID,并发送PADS报文给客户端,会话建立成功 --> 传输PPP数据 --> PPPoE【客户端】向服务端发送PADT,结束会话
    PPPoE会话建立过程
    1.5 PPPoE实施过程(采用chap认证)
# >>>>>>服务端AR2配置
# 设置全局认证的用户名和密码
aaa
local-user hcia password cipher huawei
local-user hcia service-type ppp
q
# 配置地址池,用于分发地址
ip pool hciaippool1
network 202.100.1.0 mask 255.255.255.0
dns-list 114.114.114.114  8.8.8.8   # pppoe客户端获得的dns服务器
# 配置虚拟模板和调用模板
interface virtual-template 1
ip address 202.100.1.1 255.255.255.0  # 华为设备从最高的IP开始分配地址,所以尽量配置号码小的地址
remote address pool hciaippool1  #配置客户端获取地址的方式
ppp authentication-mode chap
int g0/0/0  # 接口与虚拟模板绑定
pppoe-server bind virtual-template 1

# >>>>>>客户端AR1配置
dialer-rule #配置拨号接口
dialer-rule 1 ip permit # 允许所有IP报文转发
quit
interface dialer 1
dialer user agenttest # 该用户名不用于认证,是标识作用和dialer绑定
dialer-group 1 #将接口置于一个拨号访问组
dialer bundle 1 #指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来。
ppp chap user hcia
ppp chap password cipher huawei
ip address ppp-negotiate  # 从对端服务器获取地址
q
int g0/0/0 # 物理接口和逻辑接口绑定
pppoe-client dial-bundle-number 1 

# >>>>>>> 验证
# 重点:逻辑接口是工作的,物理接口是down的
dis ip int bri
display pppoe-client session summary