PPPOE技术
广域网概述
广域网是连接不同地区局域网的网络,通常所覆盖的范围从几十公里到几千公里,广域网与局域网的技术区别在于数据链路层和物理层的差异性,在TCP/IP参考模型中,其他各层无差异广域网络设备基本角色有三种:
CE(Customer Edge,用户边缘设备) :用户端连接服务提供商的边缘设备。CE连接一个或多个PE,实现用户接入
PE (Provider Edge,服务提供商边缘设备) :服务提供商连接CE的边缘设备。PE同时连接CE和P设备,是重要的网络节点
P(Provider ,服务提供商设备):服务提供商不连接任何CE的设备
PPP概述
PPP(Point-to-Point Protocol,点到点协议)是一种常见的广域网数据链路层协议,主要用于在全双工的 链路上进行点到点的数据传输封装,PPP提供了安全认证协议族PAP(Password Authentication Protocol,密码验证协议)和CHAP (Challenge Handshake Authentication Protocol,挑战握手认证协议),PPP协议具有良好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE
PPP链路建立流程
PPP链路的建立有三个阶段的协商过程,链路层协商、认证协商(可选)和网络层协商。
- 链路层协商(LCP):通过LCP报文进行链路参数协商,建立链路层连接
- 认证协商(可选):通过链路建立阶段协商的认证方式进行链路认证
- 网络层协商(NCP) :通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商
LCP协商:
LCP协商由不同的LCP报文交互完成。协商由任意一方发送Configure-Request报文发起。如果对端回复 Configure-Ack,协商成功。否则,需再次发起协商请求
configure-ack 协商成功
configure-nak 对方参数不合法 进行参数协商
configure-rejecte 对方参数无法识别
若参数不识别或者不合法, 需要重新发起配置请求,携带协商后参数
认证协商- PAP
链路协商成功后,进行认证协商,认证协商有两种模式,PAP和CHAP
- PAP认证双方有两次握手。协商报文以明文的形式在链路上传输
- CHAP认证双方有三次握手。协商报文被加密后再在链路上传输
NCP协商 - 静态IP地址协商
PPP认证协商后,双方进入NCP协商阶段,协商在数据链路上所传输的数据包的格式与类型。以常见的IPCP 协议为例,它分为静态IP地址协商和动态IP地址协商
- 静态IP地址协商需要手动在链路两端配置IP地址
- 动态IP地址协商支持PPP链路一端为对端配置IP地址
PPPOE
是一种把PPP帧封装到以太网帧中的链路层协议,PPPoE集中了PPP和Ethernet两个技术的优点。既可以实现以太网网络中的多台主机同时连接,又可以利用PPP协议实现认证、计费等功能。
PPPoE的会话建立有三个阶段,PPPoE发现阶段、PPPoE会话阶段和PPPoE终结阶段
PPPoE协议发现有四个步骤:
客户端发送请求(PADI):客户端广播请求需要的服务
服务端响应请求(PADO):可能会有多个服务器能够提供客户端服务
客户端确认响应 (PADR):客户端优选最先收到的服务响应并发送服务请求
和建立会话(PADS):服务器端通过分配Session ID给客户端确定会话建立
PPPoE会话阶段:
进行PPP协商,分为LCP协商、认证协商、NCP协商三个阶段
PPPoE会话终结阶段:
当PPPoE服务器、PPPoE客户端希望关闭连接时,会向对端发送一个PADT报文,用于关闭连接
客户端:
创建拨号规则来配置发起PPPoE会话的条件
[Huawei] dialer-rule
[Huawei] dialer-rule number ip | ipv6 | acl permit | deny
创建拨号接口,配置拨号接口用户名,此用户名必须与对端服务器用户名相同
[Huawei]interface dialer number
[Huawei-Dialer1]dialer user username
将接口置于一个拨号访问组
[Huawei-Dialer1]dialer-group group-number
指定当前拨号接口使用的拨号绑定
[Huawei-Dialer1]dialer-bundle number
将物理端口与dialer-bundle进行绑定
[Huawei-Ethernet0/0/0]pppoe-client dial-bundle-number numbe
服务端:
创建虚拟接口模板供ppp完成配置
[Huawei] interface Virtual-Template number
将物理端口与虚拟接口模板进行绑定
pppoe-server bind virtual-template numbe