PPPoE简介
定义
PPPoE(PPP over Ethernet)协议是一种把PPP帧封装到以太网帧中的链路层协议。PPPoE可以使以太网网络中的多台主机连接到远端的宽带接入服务器。
目的
运营商希望把一个站点上的多台主机连接到同一台远程接入设备,同时接入设备能够提供与拨号上网类似的访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
PPPoE典型组网
PPPoE组网结构采用Client/Server模型,PPPoE的客户端为PPPoE Client,PPPoE的服务器端为PPPoE Server。PPPoE Client向PPPoE Server发起连接请求,PPPoE Server为PPPoE Client提供接入控制、认证等功能。
设备作为PPPoE Client
如图1所示,Router A作为PPPoE Client下行连接局域网用户,Router B是运营商的设备。所有主机不用安装PPPoE Client拨号软件,同一个局域网中的所有主机共享一个账号,通过Router A与Router B建立PPPoE会话。
图1 设备作为PPPoE Client组网图
通过配置拨号组,将主机加入拨号组
设备作为PPPoE Server
设备作为PPPoE Server,支持动态分配IP地址,提供多种认证方式,适用于校园、智能小区等通过以太网接入Internet的组网应用。
如图2所示,所有主机上安装PPPoE Client拨号软件,每个主机都是一个PPPoE Client,分别与Router建立一个PPPoE会话。每个主机单独使用一个帐号,方便运营商对用户进行计费和控制。
图2 设备作为PPPoE Server组网图
设备作为PPPoE Server时,对端的PPPoE Client可以是安装拨号软件的主机,也可以是路由器设备。
PPPoE拨号的工作原理
PPPoE拨号是为了实现PPPoE Client与PPPoE Server之间的连接,建立PPPoE会话PPPoE拨号可分为三个阶段,即Discovery阶段、Session阶段和Terminate阶段。
Discovery阶段
Discovery阶段由四个过程组成。
PPPoE Client广播发送一个PADI(PPPoE Active Discovery Initial)报文,在此报文中包含PPPoE Client想要得到的服务类型信息。
所有的PPPoE Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO(PPPoE Active Discovery Offer)报文。
根据网络的拓扑结构,PPPoE Client可能收到多个PPPoE Server发送的PADO报文,PPPoE Client选择最先收到的PADO报文对应的PPPoE Server做为自己的PPPoE Server,并单播发送一个PADR(PPPoE Active Discovery Request)报文。
PPPoE Server产生一个唯一的会话ID(Session ID),标识和PPPoE Client的这个会话,通过发送一个PADS(PPPoE Active Discovery Session-confirmation)报文把会话ID发送给PPPoE Client,会话建立成功后便进入PPPoE Session阶段。
完成之后通信双方都会知道PPPoE的Session_ID以及对方的以太网地址,它们共同确定了唯一的PPPoE Session。
Session阶段
PPPoE Session阶段可划分为两部分,一是PPP协商阶段,二是PPP数据传输阶段。
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
LCP阶段主要完成建立、配置和检测数据链路连接。
LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果(CHAP或者PAP)决定。
认证成功后,PPP进入NCP阶段。NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它主要负责协商用户的IP地址和DNS服务器地址。
PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。
在PPPoE Session阶段所有的以太网数据包都是单播发送的。
Terminate阶段
PPP通信双方可以使用PPP协议自身来结束PPPoE会话,当无法使用PPP协议结束会话时可以使用PADT(PPPoE Active Discovery Terminate)报文。
当PPPoE客户端希望关闭连接时,会向PPPoE服务器端发送一个PADT报文,用于关闭连接。同样,如果PPPoE服务器端希望关闭连接时,也会向PPPoE客户端发送一个PADT报文。
在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦发送或收到一个PADT报文之后,连接随即关闭,就不允许再使用该会话发送PPP流量了。