1、华为机密,未经许可不得扩散资料编码 产品名称 宽带产品使用对象 工程师/合作方工程师/用户 产品版本 所有版本编写部门 固网技术支持部 资料版本 V1.0PPPOE协议技术与标准拟 制: 周一帆 日 期: 2002-01-05审 核: 陈锐 日 期: 2005-03-02审 核: 日 期:批 准: 任远 日 期: 2005-03-02华 为 技 术 有 限 公 司版权所有 侵权必究PPPOE 协议技术与标准 文档密级:内部公开华为机密,未经许可不得扩散修订记录日期 修订版本 描述 作者2002-01-05 V1.0 初稿完成 周一帆PPPOE 协议技术与标准 文档密级:内部公开华为机密,未经许
2、可不得扩散目 录第 1 章 概 述 .11.1 PPPOE 协议的基本概念 .11.1.1 PPPOE 协议出现的背景 .11.1.2 PPPOE 协议简介 .11.2 总结 .21.3 思考 .2第 2 章 PPPOE 的发现阶段 .32.1 PPPOE 的初始化过程 .32.1.1 以太网的帧格式 .32.1.2 PPPOE 的数据报文格式 .42.1.3 PPPOE 发现阶段的数据报文 .52.1.4 PPPOE 数据报文中 Tag(标记)的格式 .52.1.5 PADI(PPPOE Active Discovery Initiation)报文 .72.1.6 PADO(PPPOE Ac
3、tive Discovery Offer)报文 .82.1.7 PADR(PPPOE Active Discovery Request)报文 .92.1.8 PADS(PPPOE Active Discovery Session-confirmation)报文 .92.1.9 PADT(PPPOE Active Discovery Terminate)报文 .102.2 总结 .102.3 思考 .10第 3 章 PPPOE 的会话阶段 .113.1 PPPOE 的会话过程 .113.2 总结 .113.3 思考 .11PPPOE 协议技术与标准 文档密级:内部公开华为机密,未经许可不得扩散关
4、键词: PPPOE 集中器 PADR摘 要:PPPOE协议提供了在广播式的网络中多台主机连接到远端的访问集中器上的一种标准。本文主要介绍了PPPOE协议的报文结构以及PPPOE发现阶段的报文交互过程。缩略语清单:参考资料清单:PPPOE 协议技术与标准 文档密级:内部公开2006-08-29 华为机密,未经许可不得扩散 第 1 页, 共 15 页第 1 章 概 述1.1 PPPOE 协议的基本概念1.1.1 PPPOE 协议出现的背景随着宽带网络技术的不断发展,以 xDSL、CableModem 和以太网为主的几种主流宽带接入技术的应用已开展的如火如荼。同时又给各大网络运营商们带来了种种困惑,
5、无论使用哪种接入技术,对于他们而言可盼和可求的是如何有效的管理用户,如何从网络的投资中收取回报,因此对于各种宽带接入技术的收费的问题就变得更加敏感。在传统的以太网模型中,我们是不存在所谓的用户计费的概念,要么用户能设置/获取 IP 地址上网,要么用户就无法上网。IETF 的工程师们在秉承窄带拨号上网的运营思路(使用 NAS 设备终结用户的 PPP 数据包),制定出了在以太网上传送 PPP 数据包的协议(Point To Point Protocol Over Ethernet),这个协议出台后,各网络设备制造商也相继推出自己品牌的宽带接入服务器(BAS),它不仅能支持PPPOE 协议数据报文的
6、终结,而且还能支持其它许多协议。如华为公司的MA5200(小 BAS)和 ISN8850(大 BAS)。1.1.2 PPPOE 协议简介PPPOE 协议提供了在广播式的网络(如以太网)中多台主机连接到远端的访问集中器(我们对目前能完成上述功能的设备为宽带接入服务器)上的一种标准。在这种网络模型中,我们不难看出所有用户的主机都需要能独立的初始化自己的 PPP 协议栈,而且通过 PPP 协议本身所具有的一些特点,能实现在广播式网络上对用户进行计费和管理。为了能在广播式的网络上建立、维持各主机与访问集中器之间点对点的关系,那么就需要每个主机与访问集中器之间能建立唯一的点到点的会话。PPPOE 协议共
7、包括两个阶段,即 PPPOE 的发现阶段(PPPOE Discovery Stage)和 PPPOE 的会话阶段(PPPOE Session Stage)。在这篇培训教材中更注重是 PPPOE 发现阶段的介绍,因为对于 PPPOE 的会话阶段,可以看成和 PPP 的会话过程是一样的(可直接参照 PPP 协议培训教材),而两者的主要区别在于只是在 PPP 的数据报文前封装了 PPPOE 的报文头。无论是哪一个阶段的数据报文最终会被封装成以太网的帧进行传送。PPPOE 协议技术与标准 文档密级:内部公开2006-08-29 华为机密,未经许可不得扩散 第 2 页, 共 15 页当一个主机希望能够开
8、始一个 PPPOE 会话时,它首先会在广播式的网络(协议中是这样说的,但在实际应用中,可能还要跨跃多点访问的网络,如ATM 等,从而就形成了 PPPOEOA 的数据包)上寻找一个访问集中器,当然可能网络上会存在多个访问集中器时,对于主机而言则会根据各访问集中器(AC,Access Concentration)所能提供的服务或用户的预先的一些配置来进行相应的选择。当主机选择完了所需要的访问集中器后,就开始和访问集中器建立一个 PPPOE 会话进程。在这个过程中访问集中器会为每一个PPPOE 会话分配一个唯一的进程 ID,会话建立起来后就开始了 PPPOE 的会话阶段,在这个阶段中已建立好点对点连
9、接的双方(这种点对点的结构与PPP 不一样,它是一种逻辑上的点对点关系)就采用 PPP 协议来交换数据报文,从而完成一系列 PPP 的过程,最终将在这点对点的逻辑通道上进行网络层数据报的传送。1.2 总结 PPPOE 协议包括 PPPOE 的发现阶段和 PPPOE 的会话阶段 大多数的 BAS(宽带接入服务器)都支持 PPPOE 协议1.3 思考1、PPPOE 的客户端是依据什么条件来选项访问集中器的?PPPOE 协议技术与标准 文档密级:内部公开2006-08-29 华为机密,未经许可不得扩散 第 3 页, 共 15 页第 2 章 PPPOE 的发现阶段2.1 PPPOE 的初始化过程PPP
10、OE 的初始化过程是至关重要的,它不仅要在广播式的网络上确定一对一的逻辑关系,而且还要为 PPPOE 的会话阶段准备一些必要条件,如访问集中器唯一分配的会话 ID(Session ID)。在介绍 PPPOE 的发现阶段之前,首先让我们重温一下以太网帧的封装格式,前面也介绍过了,所有的PPPOE 的数据报文均是被封装在以太网的数据域(净载荷区)中传送的。2.1.1 以太网的帧格式以太网的帧格式对于大多数人来说是并不陌生,而且目前大多数的网络中都在使用以太网 2.0 版,因此 EthernetII 就被作为一种事实上的工业标准而广泛使用,如果对以太网不太熟悉或想深入了解的读者,可参考相关局域网技术
11、方面的书籍。下图为以太网的帧格式: 以太网目的地址(目的 MAC 地址)和以太网源地址(源 MAC 地址),是我们大家最为熟悉的数据链路层地址。它包括单播地址、多播地址和广播地址,而对于 PPPOE 协议中要使用到单播地址和广播地址。在PPPOE 协议技术与标准 文档密级:内部公开2006-08-29 华为机密,未经许可不得扩散 第 4 页, 共 15 页PPP 的培训教材中也提到了,对于 PPP 这样的数据链路层协议而言,二层地址通信双方之间已失去了原有的意义。 以太网的类型域也是我们最关心的一个字段,它在 1997 年以前还一直由施乐公司维护,但后来就交由 IEEE802 小组维护了。通过
12、这个字段的内容,数据包的接收方可以识别以太网的数据域中承载的是什么协议的数据报文。对于 PPPOE 的两大阶段,也正是通过以太网的类型域进行区分的。在 PPPOE 的发现阶段时,以太网的类型域填充 0x8863;而在PPPOE 的会话阶段时,以太网的类型域填充为 0x8864。 数据域(净载荷)主要是用来承载类型域中所指示的数据报文,在PPPOE 协议中所有的 PPPOE 数据报文就是被封装在这个域中被传送。 校验域,主要用来保证链路层数据帧传送的正确性。2.1.2 PPPOE 的数据报文格式描述完了以太网的帧格式后,我们简要介绍一下 PPPOE 的数据报文格式。PPPOE 的数据报文是被封装
13、在以太网帧的数据域内的。简单来说我们可能把 PPPOE 报文分成两大块,(虽然这样比较笼统,但还是比较好助于理解),一大块是 PPPOE 的数据报头,另一块则是 PPPOE 的净载荷(数据域),对于 PPPOE 报文数据域中的内容会随着会话过程的进行而不断改变。下图为 PPPOE 的报文的格式: PPPOE 数据报文最开始的 4 位为版本域,协议中给出了明确的规定,这个域的内容填充 0x01。 紧接在版本域后的 4 位是类型域,协议中同样规定,这个域的内容填充为 0x01。 代码域占用 1 个字节,对于 PPPOE 的不同阶段这个域内的内容也是不一样的,在这里没有用表格的形式将所有代码列出,但
14、在后续章节会给出一些代码与数据报文的对照。PPPOE 协议技术与标准 文档密级:内部公开2006-08-29 华为机密,未经许可不得扩散 第 5 页, 共 15 页 会话 ID 点用 2 个字节,当访问集中器还未分配唯一的会话 ID 给用户主机的话,则该域内的内容必须填充为 0x0000,一旦主机获取了会话 ID后,那么在后续的所有报文中该域必须填充那个唯一的会话 ID 值。 长度域为 2 个字节,用来指示 PPPOE 数据报文中净载荷的长度。 数据域,有时也称之为净载荷域,在 PPPOE 的不同阶段该域内的数据内容会有很大的不同。在 PPPOE 的发现阶段时,该域内会填充一些Tag(标记);
15、而在 PPPOE 的会话阶段,该域则携带的是 PPP 的报文。2.1.3 PPPOE 发现阶段的数据报文PPPOE 的发现阶段可分为四步,其实这个过程也是 PPPOE 四种数据报文的交换的一个过程。当完成这四步后,用户主机与访问集中器双方就能获知对方的 MAC 地址和唯一的会话 ID 号,从而进入到下一个阶段(PPPOE 的会话阶段)。实际上双方在互相知道了对方的 MAC 地址后,就已经在广播式的网络上确定了一一的对应关系,为了保证这个连接的有效性,同时使PPPOE 协议能更加灵活的运用,因此还加入了会话 ID 字段,通过这两个条件就可完成确定双方点对点的关系。在这个阶段一开始,由于接入用户并
16、不知道访问集中器的 MAC 地址,则使用类似于 ARP 解析的过程的机制来获取访问集中器的 MAC 地址。首先由接入用户侧发起一个初始化的广播报文,对于访问集中器如果配置了 PPPOE的业务时,它会时实检测网络上的数据包,当发现以太网数据帧中所承载的是 PPPOE 报文时(通过协议域的内容来区分),就会将其交给相应的模块去处理。当收到初始化报文后,访问集中器会向该用户回应一个报文。如果网络上存在很多这样的访问集中器且都收到了用户侧发送的初始化报文时,它们也都会向用户侧会送一个确认报文,如果该用户收到这个报文后,则会依据报文中所携带的内容或本端的一些配置来选择一个唯一的访问集中器进行会话。到此时
17、已完成了前两步了,那么剩下的两步则是协商一些所提供的服务选项和获取 PPPOE 会话阶段所必须的会话 ID 值。在这个阶段,前面在讲述以太网帧格式时也特别强调了,所有数据报文是被承载在以太网的数据域中的,而且以太网数据帧的协议域始终为 0x8863。下面我们结合具体的数据报文的内容,来具体的讲解这四步的过程。PPPOE 协议技术与标准 文档密级:内部公开2006-08-29 华为机密,未经许可不得扩散 第 6 页, 共 15 页2.1.4 PPPOE 数据报文中 Tag(标记)的格式对于发现阶段的 PPPOE 数据报文而言,它的净载荷可能包含零个或多个Ta(标记),实际上这些标记的意义非常类似
18、于 PPP 配置参数选项,它同样也是要经过协商的。对于 PPPOE 协议而言,没有像 PPP 的配置参数选项那样定义了很多细节,而只是一个初略的定义,因此在实际当中实现这个过程会依据不同厂商的设备有不同。首先还是让我们看一下承载在 PPPOE 报文数据域中的标记封装格式:从上图中可以看出,标记的封装格式采用的是大家所熟知的 TLV 结构,也即是(类型+长度+ 数据)。标记的类型域为 2 个字节,下表列出了各种标记类型的含义:标记类型 标记说明0x0000 表示 PPPOE 报文数据域中一串标记的结束,为了保证版本的兼容性而保留,在有些报文中有应用。0x0101 服务名,主要用来表明网络侧所能提
19、供给用户的一些服务。0x0102 访问集中器名,当用户侧接收到了 AC 的回应的 PADO 报文时,就可获从所携带的标记中获知访问集中器的名子,而且还可以据此来选择相应的访问集中器。0x0103 主机唯一标识,类似于 PPP 数据报文中的标识域,主要是用来匹配发送和接收端的,因为对于广播式的网络中会同时存在很多个 PPPOE 的数据报文。0x0104 AC-Cookies,主要被用来防止恶意性 DOS 功击。0x0105 销售商的标识符。0x0110 中继会话 ID,对于 PPPOE 的数据报文也同样可以像 DHCP 报文一样被中断到另外的 AC 上终结,这个字段则是用来维护另一个连接的。0x0201 服务名错误,当请求的服务名不被对端所接受时,会在响应的报文中携带这个标记。0x0202 访问集中器名出错。