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数据包举例
pppoe白皮书的更多相关文章
- PPPoE技术白皮书(H3C)
PPPoE技术白皮书 关键词:PPP,Ethernet,PPPoE 摘要:PPPoE是一种通过一个远端接入设备为以太网上的主机提供接入服务,并可以对接入的每个主机实现控制和计费的技术.本文介绍了PPP ...
- 树莓派pppoe
连接的网络是移动(铁通)的宽带,不同的宽带的dns需要修改. 1.首先安装pppoe包 apt-get install pppoe 2.然后,复制conf文件/etc/ppp/pppoe.conf: ...
- dd-wrt 定时重连 pppoe 更换ip地址
因为做代理,IP时常被封的原因,所以,需要每天定时重启路由器,重启路由器影响太大,所以重新拨号是一个更好的选择. 在dd-wrt里面,杀掉pppoe服务进程就可以了,这个进程会自动重新启动,然后就相当 ...
- PPPoE(以太网上的点对点协议)
协议概述 PPPoE分为两个阶段,即Discovery(地址发现)阶段和PPP会话阶段.当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个 ...
- Configure PPPoE on CentOS7
Why? I prefer using ethernet to Wifi to access internet. But, I'm afraid, sometimes I have to use Wi ...
- Java白皮书的关键术语
“白皮书”可以在http://www.oracle.com/technetwork/java/langenv-140151.html上找到. 1.简单性. 2.面向对象. 3.网络技能(Network ...
- WPF路线图白皮书: 2015及未来
介绍 当2006年微软首次推出Windows Presentation Foundation(WPF)时,它代表了应用程序的设计和开发又向前跨出了巨大的一步.它简化了GUI应用程序的开发,有助于UI和 ...
- openwrt刷机后配置PPPOE上网方法
参考下帖13#的方式: 如何编辑配置openwrt,来实现pppoe拨号上网? 但其中有一句代码有错误: option 'peerdns' '0',其中需将‘0’改为‘1’
- PPPoE名词解释
PPPoE拔号的发现阶段(Discovery): PPPoE的发现阶段一共分为4步. 分别是: PADI(PPPoE Active Discovery Initiation) PADO(PPPoE A ...
随机推荐
- OpenCV中Kinect的使用(3)
接OpenCV中Kinect的使用(2),下面内容主要讲述使用OpenNI 控制Kinect 的马达,实现摄像头的上下摆动. 下面是透过OpenNI比较低阶的USB控制介面(XnUSB.h),来做到马 ...
- 创建动作action类:
Action类是Struts 2应用程序的关键,我们实现了大部分Action类中的业务逻辑.因此,让我们创建一个Java文件HelloWorldAction.java的Java资源> SRC下一 ...
- centos7 更换yum源为阿里云
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos ...
- try git
Git allows groups of people to work on the same documents (often code) at the same time, and without ...
- 小知识,大智慧(restframework 拾忆)
一.直接对query_set序列化,在页面展示的效果是Unicode 编码格式 ,可在json 序列化时候加入一个参数 course_query = DegreeCourse.objects.all( ...
- jmeter返回结果是乱码及Unicode转中文
1.结果树中有乱码的处理方式 到bin目录下面修改jmeter的配置文件 使用jmeter进行压测时,如果响应数据的返回结果有乱码,则修改jmeter.properties文件中的该字段的值改为utf ...
- java用iText导出word文档
1.需要导入的jar包 2.导出word并下载其实是分两步的. 第一步是将需要导出的数据导出(上传)到服务器上 第二步是将服务器上的文档下载到本地 3. 第一步.上传文档 (1)设置响应信息以及构造上 ...
- web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?
web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的We ...
- 《从零开始学Swift》学习笔记(Day43)——构造函数继承
原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的子类构造函数的来源有两种:自己编写和从父类继承.并不是父类的所有的构造函数都能继承下来,能够从父类继承下来的构造函数是有条件的,如下所示. ...
- 使用MyBatis_Generator工具jar包自动化生成Dto、Dao、Mapping 文件
由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,所以查资料发现有现成的工具可以自动生成底层模型类.Dao接口类甚至Mappi ...