一 , 背景
随着运营商对宽带接入技术要求的不断提高,以xDSL,CableModem和以太网为主的几种宽带接入技术在用户管理和计费等方面的不足开始显露,已无法满足运营商的需求。
在众多的技术中,以太网接入方式经济实惠,而PPP协议又可以提供良好的访问控制和计费功能,结合以太网的经济性及PPP良好的可扩展性与管理控制功能,于是产生了PPPoE(在以太网上承载PPP协议)。
PPPoE协议的提出很好地解决了用户管理和上网收费等实际应用问题,得到了运营商的认可并广为采用。
二 ,PPPoE 技术优点
(1)用户角度
对于用户来说,PPPoE具有以下优点:
沿袭传统的拨号上网方式,依旧使用用户熟悉的硬件以及类似的软件进行internet的接入;
兼容现有的所有xDSL Modem,不需要对客户端的xDSL Modem进行复杂的配置;
使用以太网网卡连接PC和xDSL Modem,允许多台同时共享xDSL线路,可以节约用户投资;
(2)运营商角度
对于运营商来说,PPPoE具有以下优点:
三 , PPPoE技术实现
(1)PPPoE组网结构
PPPoE使用 client / server 模型,PPPoE client 向PPPoE server 发起连接请求,两者之间会话协商通过后,就建立PPPoE会话,此后PPPoE server 向 pppoe client 提供控制,认证,计费功能;
根据pppoe会话的起点所在位置的不同,pppoe分为 router-initiated 和 host-initiated 两种组网结构。
(2)router-initiated 组网结构
如下图所示,router-initiated 组网结构是在两台路由器之间建立 pppoe 会话,所有主机通过同一个 pppoe 会话传送数据,主机上不用安装 pppoe 客户端拨号软件,一般是一个企业共用一个账号接入网络(图中pppoe client 位于企业 / 公司内部,pppoe server 是运营商的设备)。
router-initiated 组网结构图
(3)host-initiated 组网结构
如下图所示,host-initiated 组网结构是将pppoe会话建立在host和运营商的路由器之间,为每一个host建立一个pppoe会话,每个host都是pppoe client ,每一个host 使用一个账号,方便运营商对用户进行计费和控制,host上必须安装pppoe客户端拨号软件。
host-initiated组网结构图
四 , PPPoE报文
(1)PPPoE报文格式
如图所示:ppoe报文的格式是在以太网帧中携带的ppp报文
各个字段解释如下:
desination_address域:一个以太网单播目的地址或者以太网广播地址,在Discovery阶段,确认pppoe server后使用单播地址。在 session阶段,该域的值必须是Discovery阶段已确定对方的单播地址。
source_address:源设备的以太网MAC地址。
ether_type:取值为0x8863表示Discovery阶段或Terminate阶段,0x8864表示session阶段。
ver域:pppoe版本号。
type域:pppoe类型。
code域:pppoe报文类型
0x00:会话数据
0x09:PADI报文
0x07:PADO 或 PADT 报文
0x19:PADR报文
0x65:PADS报文
seeeion_ID域:对于一个给定的PPP会话,该值是一个固定值,并且与以太网source_address和destination_address一起实际地定义了一个PPP会话,值0xffff为将来的使用保留,不允许使用。
length域:16bits,定义PPPoE的Payload域长度,不包括以太网头部和PPPoE头部的长度。
(2)PADI报文
如图所示,PADI报文的主要字段包括:
code域为0x09
session_ID域为0x0000
TAG_TYPE域为0x0101(server-name),表明后面紧跟的是服务的名称,有且只有一个TAG_TYPE为server-name的TAG,其他类型的TAG可选。
(3)PADO报文
如图所示
code域为0x07
session_ID域为0x0000
TAG_TYPE域为0x0101(server-name),表明后面紧跟的是服务的名称,为0x0102(AC-name)表明后面紧跟的字符串唯一地表示了某个特定的访问集中器。有且只有一个TAG_TYPE为AC-name的TAG,至少一个TAG_TYPE为server-name的TAG。
(4)PADR报文
如图所示
code域为0x19
session_ID域为0x0000
TAG_TYPE域为0x0101(server-name),表明后面紧跟的是服务的名称,有且只有一个TAG_TYPE为server-name的TAG,其他类型的TAG可选。
(5)PADS报文
如图所示
code域为0x65
session-id域为discovery阶段分配的值
TAG为可选
(6)PADT报文
如图所示
code域为0xa7
session-id域为discovery阶段分配的值
五 , PPPoE工作过程
PPPoE协商过程如图所示,协商过程包括discovery,session和terminate三个阶段。
(1)discovery阶段
discovery阶段完成之后通信双方都会知道pppoe的session-id以及对方以太网地址,它们共同确定了唯一的pppoe session 。
client广播发PADI,包含client想要的服务类型信息。
server收到PADI,比较,可以则单播发PADO。
client可能收到多个PADO,选择一个,并单播发PADR。
server产生唯一一个session-id,标识和client的会话,发PADS,建立会话阶段。
(2)session阶段
分为lcp , 认证 , ncp三个阶段。
LCP:完成建立,配置,检测数据链路连接。
认证:CHAP 或 PAP 。
NCP:配置用户的IP和DNS等 。
(3)terminate阶段
PADT可以在任意时刻发送终止。