2PPPoE技术实现

2026-01-08 01:28:23 4016

1 概述

1.1 产生背景

随着运营商对宽带接入技术要求的不断提高,以xDSL、CableModem和以太网为主的几种宽带接入技术在用户管理和计费等方面的不足开始显露,已无法满足运营商的需求。

在众多的接入技术中,以太网接入方式经济实惠,而PPP协议又可以提供良好的访问控制和计费功能,结合以太网的经济性及PPP良好的可扩展性与管理控制功能,于是产生了PPPoE(Point-to-Point

Protocol over Ethernet,在以太网上承载PPP协议)。

PPPoE协议的提出很好地解决了用户管理和上网收费等实际应用问题,得到了运营商的认可并广为采用。

1.2 技术优点

1.2.1

用户角度

对于用户来说,PPPoE具有以下优点:

· 沿袭传统的拨号上网方式,依旧使用用户熟悉的硬件以及类似的软件进行Internet的接入。

· 兼容现有的所有xDSL Modem,不需要对客户端的xDSL Modem进行复杂的配置。

· 使用以太网网卡连接PC和xDSL Modem,允许多台PC同时共享xDSL线路,可以节约用户投资。

1.2.2 运营商角度

对于运营商来说,PPPoE具有以下优点:

· 运营商可以通过数字用户线、电缆调制解调器或无线连接等方式提供支持多用户的宽带接入服务。

· 运营商可以利用可靠和熟悉的技术来加速部署高速互联网业务,对现有网络部署影响小。

· 运营商可以通过访问控制功能对用户的身份进行确认,通过计费功能对用户进行计费,同时对用户的网络行为进行监控,保证了网络安全。

· 终端用户可同时接入多个运营商,这种动态服务选择的功能可以使运营商容易创建和提供新的业务。

2 PPPoE技术实现

2.1 PPPoE组网结构

PPPoE使用Client/Server模型。PPPoE Client向PPPoE Server发起连接请求,两者之间会话协商通过后,就建立PPPoE会话,此后PPPoE Server向PPPoE Client提供接入控制、认证、计费等功能。

根据PPPoE会话的起点所在位置的不同,PPPoE分为Router-Initiated和Host-Initiated两种组网结构。

2.1.1 Router-Initiated组网结构

如图1所示,Router-Initiated组网结构是在两台路由器之间建立PPPoE会话,所有主机通过同一个PPPoE会话传送数据,主机上不用安装PPPoE客户端拨号软件,一般是一个企业共用一个账号接入网络(图中PPPoE

Client位于企业/公司内部,PPPoE Server是运营商的设备)。

图1 Router-Initiated组网结构图

2.1.2 Host-Initiated组网结构

如图2所示,Host-Initiated组网结构是将PPPoE会话建立在Host和运营商的路由器之间,为每一个Host建立一个PPPoE会话,每个Host都是PPPoE Client,每个Host使用一个帐号,方便运营商对用户进行计费和控制。Host上必须安装PPPoE客户端拨号软件。

图2 Host-Initiated组网结构图

2.2 PPPoE报文

2.2.1 PPPoE报文格式

如图3所示,PPPoE报文的格式是在以太网帧中携带PPP报文。

图3 报文格式

各个字段解释如下:

· Destination_address域:一个以太网单播目的地址或者以太网广播地址(0xffffffff)。在Discovery阶段,该域的值可以是单播或者广播地址,PPPoE

Client寻找PPPoE

Server的过程使用广播地址,确认PPPoE Server后使用单播地址。在Session阶段,该域的值必须是Discovery阶段已确定的通信对方的单播地址。

· Source_address域:源设备的以太网MAC地址。

· Ether_type:取值为0x8863表示Discovery阶段或Terminate阶段,0x8864表示Session阶段。

· Ver域:4bits,PPPoE版本号,值为0x1。

· Type域:4bits,PPPoE类型,值为0x1。

· Code域:8bits,PPPoE报文类型,取值包括:

¡ 0x00,表示会话数据。

¡ 0x09,表示PADI(PPPoE Active Discovery

Initiation)报文。

¡ 0x07,表示PADO(PPPoE Active

Discovery Offer)或PADT(PPPoE Active Discovery Terminate)报文。

¡ 0x19,表示PADR(PPPoE Active

Discovery Request)报文。

¡ 0x65,表示PADS(PPPoE Active Discovery

Session-confirmation)报文。

· Session_ID域:16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xffff为将来的使用保留,不允许使用。

· Length域:16bits,定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。

2.2.2 PADI报文

如图4所示,PADI报文的主要字段包括:

· Code域为0x09。

· Session_ID域为0x0000。

· TAG_TYPE域为0x0101(Service-Name),表明后面紧跟的是服务的名称。有且只有一个TAG_TYPE为Service-Name的TAG,其他类型的TAG可选。

图4 PADI数据包举例

2.2.3 PADO报文

如图5所示,PADO报文的主要字段包括:

· Code域为0x07。

· SESSION_ID域为0x0000。

· TAG_TYPE域为0x0101(Service-Name),表明后面紧跟的是服务的名称;为0x0102(AC-Name)表明后面紧跟的字符串唯一地表示了某个特定的访问集中器。有且只有一个TAG_TYPE为AC-Name的TAG,至少一个TAG_TYPE为Service-Name的TAG。

图5 PADO数据包举例

2.2.4 PADR报文

如图6所示,PADR报文的主要字段包括:

· Code域为0x19。

· SESSION_ID为0x0000。

· TAG_TYPE域为0x0101(Service-Name),表明后面紧跟的是服务的名称。有且只有一个TAG_TYPE为Service-Name的TAG,其他类型的TAG可选。

图6 PADR数据包举例

2.2.5 PADS报文

如图7所示,PADS报文的主要字段包括:

· Code域为0x65。

· SESSION_ID为Discovery阶段分配的数值。

· TAG为可选。

图7 PADS数据包举例

2.2.6 PADT报文

如图8所示,PADT报文的主要字段包括:

· Code域为0xa7。

· SESSION_ID域为Discovery阶段分配的数值。

· 无TAG。

图8 PADT数据包举例

2.3 PPPoE工作过程

PPPoE的协商过程如图9所示:

图9 PPPoE协商过程

PPPoE协商过程包括Discovery、Session和Terminate三个阶段。

2.3.1 Discovery阶段

Discovery阶段完成之后通信双方都会知道PPPoE的Session ID以及对方以太网地址,它们共同确定了唯一的PPPoE Session。

Discovery阶段由四个过程组成,具体如下:

(1) PPPoE Client广播发送一个PADI报文,在此报文中包含PPPoE

Client想要得到的服务类型信息。

(2) 所有的PPPoE

Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO报文。

(3) 根据网络的拓扑结构,PPPoE Client可能收到多个PPPoE Server发送的PADO报文,PPPoE Client选择最先收到的PADO报文对应的PPPoE Server做为自己的PPPoE Server,并单播发送一个PADR报文。

(4) PPPoE Server产生一个唯一的会话ID(Session ID),标识和PPPoE Client的这个会话,通过发送一个PADS报文把会话ID发送给PPPoE Client,从而建立会话,并进入PPPoE Session阶段。

2.3.2 Session阶段

PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段,具体如下:

(1) LCP阶段主要完成建立、配置和检测数据链路连接。

(2) LCP协商成功后,开始进行认证工作,认证协议类型由LCP协商结果(CHAP或者PAP)决定。

(3) 认证成功后,PPP进入NCP阶段。NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP和DNS等工作。

PPPoE Session的PPP协商成功后,其上就可以承载PPP数据报文。

在PPPoE

Session阶段所有的以太网数据包都是单播发送的。

2.3.3 Terminate阶段

进入PPPoE

Session阶段后,PPPoE

Client和PPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接。PADT报文可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量,即使是常规的PPP结束数据包也不允许发送。

3 典型组网应用

3.1 利用ADSL Modem将局域网接入Internet

图10 利用ADSL

Modem将局域网接入Internet组网图

如图10所示,企业希望使用一个公共帐号访问Internet。Router A作为PPPoE Client,通过一个帐号访问Internet(相当于整个企业的员工公用这个帐号)。Router B作为PPPoE Server连接至DSLAM,提供RADIUS认证、计费等功能,同时连接到Internet。

3.2 无线PPPoE接入

图11 无线PPPoE接入组网图

如图11所示,AP设备作为PPPoE Client,BRAS设备作为PPPoE Server,终端用户可以直接通过无线网络访问Internet。

4 参考文献

· RFC1661:The Point-to-Point Protocol (PPP)

· RFC2516:A Method for Transmitting PPP Over Ethernet

(PPPoE)

Copyright © 2022 硬核游戏活动情报站 All Rights Reserved.