pppoe白皮书
转:https://blog.csdn.net/achejq/article/details/19478811
PPPoE技术白皮书
关键词:PPP,Ethernet,PPPoE
摘 要:PPPoE是一种通过一个远端接入设备为以太网上的主机提供接入服务,并可以对接入的每个主机实现控制和计费的技术。本文介绍了PPPoE的产生背景、技术优点、工作过程和典型组网应用。
缩略语:
缩略语 |
英文全名 |
中文解释 |
ADSL |
Asymmetric Digital Subscriber Line |
非对称数字用户线 |
DSLAM |
Digital Subscriber Line Access Multiplexer |
数字用户线接入复用器 |
PPP |
Point to Point Protocol |
点对点协议 |
PPPoE |
PPP Over Ethernet |
在以太网上承载PPP协议 |
PADI |
PPPoE Active Discovery Initiation |
PPPoE活动发现发起报文 |
PADO |
PPPoE Active Discovery Offer |
PPPoE活动发现提供报文 |
PADR |
PPPoE Active Discovery Request |
PPPoE活动发现请求报文 |
PADS |
PPPoE Active Discovery Session-confirmation |
PPPoE活动发现会话报文 |
PADT |
PPPoE Active Discovery Terminate |
PPPoE活动发现终结报文 |
1 概述
1.1 产品背景
人们想通过相同的接入设备来连接到远程站点上的多个主机,同时接入设备能够提供与拨号上网类似的访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP的方法,即PPPoE。
PPPoE协议的提出解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并广为采用。
1.2 技术优点
对于用户来说,PPPoE的优点如下:
l 沿袭传统的拨号上网方式,依旧使用他们熟悉的硬件以及类似的软件进行Internet的接入。
l 兼容现有的所有xDSL Modem,不需要对客户端的xDSL Modem进行复杂的配置。
l 使用以太网网卡连接PC和xDSL Modem,允许多台PC同时共享xDSL线路,可以节约用户投资。
对于运营商来说,PPPoE的优点如下:
l 运营商可以通过数字用户线、电缆调制解调器或无线连接等方式提供支持多用户的宽带接入服务。
l 运营商可以利用可靠和熟悉的技术来加速部署高速互联网业务,对现有网络部署影响小。
l 运营商可以通过访问控制功能对用户的身份进行确认,通过计费功能对用户进行计费,同时对用户的网络行为进行监控,保证了网络安全。
l 终端用户可同时接入多个运营商,这种动态服务选择的功能可以使运营商容易创建和提供新的业务。
2 PPPoE技术实现方案
2.1 PPPoE组网结构
PPPoE使用Client/Server模型,PPPoE的客户端为PPPoE Client,PPPoE的服务器端为PPPoE Server。PPPoE Client向PPPoE Server发起连接请求,两者之间会话协商通过后,PPPoE Server向PPPoE Client提供接入控制、认证等功能。
根据PPP会话的起止点所在位置的不同,有两种组网结构:
l 第一种方式在设备之间建立PPP会话,所有主机通过同一个PPP会话传送数据,主机上不用安装PPPoE客户端拨号软件,一般是一个企业(公司)共用一个账号(图中PPPoE Client位于企业/公司内部,PPPoE Server是运营商的设备)。
图1 PPPoE组网结构图1
l 第二种部署方式,PPP会话建立在Host和运营商的路由器之间,为每一个Host建立一个PPP会话,每个Host都是PPPoE Client,每个Host一个帐号,方便运营商对用户进行计费和控制。Host上必须安装PPPoE客户端拨号软件。
图2 PPPoE组网结构图2
2.2 PPPoE报文格式
PPPoE报文的格式就是在以太网帧中携带PPP报文,如图3所示。
各个字段解释如下:
l Destination_address域:一个以太网单播目的地址或者以太网广播地址(0xffffffff)。对于Discovery数据包来说,该域的值是单播或者广播地址,PPPoE Client寻找PPPoE Server的过程使用广播地址,确认PPPoE Server后使用单播地址。对于Session阶段来说,该域必须是Discovery阶段已确定的通信对方的单播地址。
l Source_address域:源设备的以太网MAC地址。
l Ether_type:设置为0x8863(Discovery阶段或拆链阶段)或者0x8864(Session阶段)。
l Ver域:4bits,PPPoE版本号,值为0x1。
l Type域:4bits,PPPoE类型,值为0x1。
l Code域:8bits,PPPoE报文类型。Code域为0x00,表示会话数据。Code域为0x09,表示PADI报文;Code域为0x07,表示PADO或PADT报文;Code域为0x19,表示PADR报文;Code域为0x65,表示PADS报文。报文的具体情况请参见附录部分。
l Session_ID域:16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xffff为将来的使用保留,不允许使用。
l Length域:16bits,定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。
2.3 PPPoE工作过程
PPPoE的协商过程如图4所示:
图4 PPPoE协商过程
PPPoE可分为三个阶段,即Discovery阶段、Session阶段和Terminate阶段。
2.3.1 Discovery阶段
Discovery阶段由四个过程组成。完成之后通信双方都会知道PPPoE的Session_ID 以及对方以太网地址,它们共同确定了唯一的PPPoE Session。
(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 Discovery阶段的工作为PPPoE Client和PPPoE之间建立了Session,之后PPPoE便进入了Session阶段,Session阶段可划分为两部分,一是PPP协商阶段,二是PPP报文传输阶段。
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阶段
PPP通信双方应该使用PPP协议自身(比如PPP终结报文)来结束PPPoE会话,但在无法使用PPP协议结束会话时可以使用PADT报文。
进入PPPoE Session阶段后,PPPoE Client和PPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接。PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了,即使是常规的PPP结束数据包也不允许发送。
3 典型组网应用
3.1 利用ADSL Modem将局域网接入Internet
3.1.1 组网需求
企业希望使用一个公共帐号访问Internet:
l Router A作为PPPoE Client,通过一个帐号访问Internet(相当于整个企业的员工公用这个帐号)。
l Router B作为PPPoE Server连接至DSLAM,提供RADIUS认证、计费等功能,同时连接到Internet。
3.1.2 组网图
图5 利用ADSL Modem将局域网接入Internet组网图
3.2 无线PPPoE接入
3.2.1 组网需求
AP设备作为PPPoE Client,BRAS设备作为PPPoE Server,终端用户可以直接通过无线网络访问Internet。
3.2.2 组网图
图6 无线PPPoE接入组网图
4 参考文献
l RFC1661:The Point-to-Point Protocol (PPP)
l RFC2516:A Method for Transmitting PPP Over Ethernet (PPPoE)
5 附录
5.1 报文结构
1. PADI(PPPoE Active Discovery Initiation)
l Code域为0x09。
l Session_ID域为0x0000。
l TAG_TYPE域为0x0101(Service-Name),表明后面紧跟的是服务的名称。有且只有一个TAG_TYPE为Service-Name的TAG,其他类型的TAG可选。
图7 PADI数据包举例
2. PADO(PPPoE Active Discovery Offer)
l Code域为0x07。
l SESSION_ID域为0x0000。
l TAG_TYPE域为0x0101(Service-Name),表明后面紧跟的是服务的名称;为0x0102(AC-Name)表明后面紧跟的字符串唯一地表示了某个特定的访问集中器。有且只有一个TAG_TYPE为AC-Name的TAG,至少一个TAG_TYPE为Service-Name的TAG。
图8 PADO数据包举例
3. PADR(PPPoE Active Discovery Request)
l Code域为0x19。
l SESSION_ID为0x0000。
l TAG_TYPE域为0x0101(Service-Name),表明后面紧跟的是服务的名称。有且只有一个TAG_TYPE为Service-Name的TAG,其他类型的TAG可选。
图9 PADR数据包举例
4. PADS(PPPoE Active Discovery Session-confirmation)
l Code域为0x65。
l SESSION_ID为Discovery阶段分配的数值。
l TAG为可选。
图10 PADS数据包举例
5. PADT(PPPoE Active Discovery Terminate)
l Code域为0xa7。
l SESSION_ID域为Discovery阶段分配的数值。
l 无TAG。
图11 PADT数据包举例