您现在正在浏览:首页 > 职教文章 > 职教论文 > PPPoE认证技术介绍

PPPoE认证技术介绍

日期: 2019/8/16 浏览: 3 来源: 学海网收集整理 作者: 学海网

目录
   1. PPPoE:以太网上的PPP 1
   2. 工作原理 2
   2.1 验证过程 3
   3. 技术概要 4
   3.1 通信过程概述 4
   3.2 协议头格式 5
   3.2.1 协议值 5
   3.2.2 PPPOE协议头 5
   3.3 发现阶段 5
   3.3.1 TAG 5
   3.3.2 PPPOE主动发现初始包 6
   3.3.3 PPPOE主动发现提议包 7
   3.3.4 PPPOE主动发现请求包 7
   3.3.5 PPPOE主动发现会话确认包 7
   3.3.6 PPPOE主动发现停止包 8
   3.4 PPP会话 8
   4. ADSL拨号过程简述 8
  
   PPPoE是point-to-point protocol over ethernet的简称,可以使以太网的主机通过一个简单的桥接设备连到一个远端的接入集中器上。通过PPPoE协议,远端接入设备能够实现对每个接入用户的控制和计费。PPPoE协议发表于RFC 2516。
   与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式ADSL就使用了PPPoE协议。
   modem接入技术面临一些相互矛盾的目标,既要通过同一个用户前置接入设备连接远程的多个用户主机,又要提供类似拨号一样的接入控制,计费等功能,而且要尽可能地减少用户的配置操作。
   PPPOE的目标就是解决上述问题,1998年后期问世的以太网上点对点协议(PPPoverEthernet)技术是由Redback网络公司、客户端软件开发商RouterWare公司以及Worldcom子公司UUNET Technologies公司在IETFRFC的基础上联合开发的。通过把最经济的局域网技术-以太网和点对点协议的可扩展性及管理控制功能结合在一起,网络服务提供商和电信运营商便可利用可靠和熟悉的技术来加速部署高速互联网业务。它使服务提供商在通过数字用户线、电缆调制解调器或无线连接等方式,提供支持多用户的宽带接入服务时更加简便易行。同时该技术亦简化了最终用户在选择这些服务时的配置操作。
   1. PPPoE:以太网上的PPP
   在以太网上承载PPP协议(点到点连接协议),它利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并对接入的每一个主机实现控制、计费功能。极高的性能价格比使PPPoE在包括小区组网建设等一系列应用中广泛采用
   PPPoE 的以太网有效载荷显示如下:
   4
   8
   16
   32 bit
   Ver
   Type
   Code
   Session-ID
   Length
   Payload
   VER ― PPPOE 版本。必须设置为 0x1。
   TYPE ― 必须设置为 0x1。
   CODE ― Discovery和PPP Session阶段有定义。
   SESSION_ID―无符号值。Discovery数据包中有该字段定义。对于特定的 PPP Session而言,该值为固定值。实际上,该字段定义了包括以太网SOURCE_ADDR 和 DESTINATION_ADDR 的PPP。0xffff作为预留值,不作使用。
   LENGTH ― 表示PPPoE有效载荷长。不包括以太网或PPPoE头的长度。
   随着低成本的宽带技术变得日益流行,DSL(Digital Subscriber Line)数字用户线技术更是使得许多计算机在互联网上能够酣畅淋漓的冲浪了。但是这也增加了DSL服务提供商们对于网络安全的担心。
   通过ADSL方式上网的计算机大都是通过以太网卡(Ethernet)与互联网相连的。同样使用的还是普通的TCP/IP方式,并没有附加新的协议。另外一方面,调制解调器的拨号上网,使用的是PPP协议,即Point to Point Protocol,点到点协议,该协议具有用户认证及通知IP地址的功能。PPP over Ethernet(PPPoE)协议,是在以太网络中转播PPP帧信息的技术,尤其适用于DSL等方式。
   2. 工作原理
   PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoESESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。
   当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,以识别局端的以太网MAC地址,并建立一个PPPoESESSION-ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的Client/Server(客户/服务器)模式。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。
   PPPoE协议会话的发现和会话两个阶段具体进程如下。
   (1)发现阶段
   在发现(Discovery)阶段中用户主机以广播方式寻找所连接的所有接入集中器(或交换机),并获得其以太网MAC地址。然后选择需要连接的主机,并确定所要建立的PPP会话标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoESESSION-ID和对端的以太网地址,他们一起唯一定义PPPoE会话。这4个步骤如下。
   ①主机广播发起分组(PADI),分组的目的地址为以太网的广播地址0×ffffffffffff,CODE(代码)字段值为0×09,SESSION-ID(会话ID)字段值为0×0000。PADI分组必须至少包含一个服务名称类型的标签(标签类型字段值为0×0101),向接入集中器提出所要求提供的服务。
   ②接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包(PADO)分组,以响应请求。其中CODE字段值为0×07,SESSION-ID字段值仍为0×0000。PADO分组必须包含一个接入集中器名称类型的标签(标签类型字段值为0×0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。
   ③主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组(PADR)。其中CODE字段为0×19,SESSION_ID字段值仍为0×0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。
   ④接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65,SESSION-ID字段值为接入集中器所产生的一个唯一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS分组确认后,双方就进入PPP会话阶段。
   (2)PPP会话阶段
   用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。
   PPPoE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送。当对方接收到一个PADT分组,就不再允许使用这个会话来发送PPP业务。PADT分组不需要任何标签,其CODE字段值为0×a7,SESSION-ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPoE会话,但是当PPP不能使用时,可以使用PADT。
   2.1 验证过程
   (1) 在STA和AP之间建立好关联之后,客户端向AC设备发送一个PADI报文,开始PPPOE接入的开始。
   (2) AC向客户端发送PADO报文。
   (3) 客户端根据回应,发起PADR请求给AC。
   (4) Ac产生一个session id,通过PADS发给客户端。
   (5) 客户端和AC之间进行PPP的LCP协商,建立链路层通信。同时,协商使用PAP、CHAP认证方式。
   (6) AC通过Challenge报文发送给认证客户端,提供一个128bit的Challenge。
   (7) 客户端收到Challenge报文后,将密码和Challenge做MD5算法后的Challenge—Password,在Response回应报文中把它发送给AC设备。
   (8) Ac将Challenge、challenge-Password和用户名一起送到RADIus用户认证服务器,由RADIUS用户认证服务器进行认证。
   (9) RADIUS用户认证服务器根据用户信息判断用户是否合法,然后回应认证成功/失败报文到AC。如果成功,携带协商参数,以及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束。
   (10) AC将认证结果返回给客户端。
   (11) 用户进行NCP(如IPCP)协商,通过AC获取到规划的IP地址等参数。
   (12) 认证如果成功,AC发起计费开始请求给RADIUS用户认证服务器。
   (13) RADIUS用户认证服务器回应计费开始请求报文。用户上线完毕,开始上网。
   假如客户端要通过一个局域网与远程的PPPoE服务器进行身份验证,这时,它们会有两个不同的会话阶段,Discovery阶段和PPP会话阶段。当一个客户端想开始一个PPPoE会话时,它必须首先进行发现阶段以识别对端的以太网MAC地址,并建立一个PPPoESESSON_ID。在发现阶段,基于网络的拓扑结构,客户端可以发现多个PPPoE服务器,然后从中选择一个,不过通常都是选择反应最快的一个。
   Discovery阶段是一个无状态的阶段,该阶段主要是选择接入服务器,确定所要建立的PPP会话标识符Session ID,同时获得对方点到点的连接信息;PPP会话阶段执行标准的PPP过程。当此阶段完成,通信的两端都知道PPPoESESSON_ID和对端的以太网地址,它们一起定义了一个唯一的PPPoE会话。这些步骤包括客户端广播一个发起分组(PADI),一个或多个PPPoE服务器发送响应分组(PADO),客户端向选中的服务器发送请求分组(PADR),选中的PPPoE服务器发送一个确认分组(PADS)给客户端。当客户端接收到确认分组,它可以开始进行PPP会话阶段。当PPPoE服务器发送出确认分组,它可以开始PPP会话。
   当客户端在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。如果客户端正等待接收PADS,应该使用具有客户端重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新发送PADI分组。PPPOE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由客户端或者PPPOE服务器发送。当接收到一个PADT,不再允许使用这个会话来发送PPP业务在发送或接收PADT后,即正常的PPP不能使用时,可以使用PADT,一旦PPPOE会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的,身份验证是发生在会话阶段的,PPPoE会话的SESSION_ID一定不能改变,并且必须是发现阶段分配的值。
   3. 技术概要
   3.1 通信过程概述
   建立PPPOE通道(ADSL拨号)分两个阶段:发现阶段和PPP会话阶段。
   在发现阶段,以太网上的客户机要找到一个访问集中器(AC,Access Concentrator),也就是局端的AC,不是客户端的那个猫,发现阶段完成后,客户机和AC都得到要在以太网上建立PPP通道的相关信息。
   发现阶段是无状态的,也就是两边都不用保存以前的状态信息;只有PPP会话开始后,双方就要建立一个虚拟的PPP通信接口,具体在Linux下会有ppp0网卡,在windows下网络连接中增加ADSL的接口。
   3.2 协议头格式
   3.2.1 协议值
   PPPOE数据是直接在以太头数据之上的,其等级和ARP、IP等是相同的,在以太头的类型字段中,用0x8863 表示是PPPOE发现阶段数据,用0x8864表示PPP会话阶段数据,如图1所示。(类比:0x0800表示IP数据,0x0806表示ARP数据)
  

PPPoE认证技术介绍

   图1 PPPoE封装
   3.2.2 PPPOE协议头
  
PPPoE认证技术介绍

   图2 PPPoE协议头
   PPPOE协议头有6个字节,正好和14字节的以太头实现了4字节对齐,包括以下字段:
   VER:版本号,4位,必须为0x01TYPE:类型,4位,必须是0x01CODE:8位,在发现阶段和PPP会话阶段有不同的定义,表示PPPOE数据类型SESSION_ID:16位,用来定义一个PPP会话,在发现过程中定义。LENGTH:16位,表示负载长度,不包括以太头和PPPOE头。
   3.3 发现阶段
   PPPOE发现阶段数据的以太类型是0x8863。
   3.3.1 TAG
   在发现阶段用于交换客户机和AC的信息,建立PPPOE通道,负载信息都是PPPOE信息,并没有上层协议数据。
   发现阶段的负载称为TAG,一个TAG信息格式如下,负载信息中可能会包含多个TAG:
  
PPPoE认证技术介绍

   图3 TAG信息格式
   TAG_TYPE:16位,表示TAG类型
   TAG_LENGTH:16位,表示TAG_VALUE部分的长度
   TAG_VALUE:TAG值
   TAG_TYPE可取以下值(注意第一字节为2表示是错误信息):
   0x0000 End-Of-List
   0x0101 Service-Name
   0x0102 AC-Name
   0x0103 Host-Uniq
   0x0104 AC-Cookie
   0x0105 Vendor-Specific
   0x0110 Relay-Session-Id
   0x0201 Service-Name-Error
   0x0202 AC-System-Error
   0x0203 Generic-Error
   3.3.2 PPPOE主动发现初始包
   PPPOE主动发现初始包(PPPoE Active Discovery Initiation,PADI)由客户机发出,以太头中的目的地址是以太广播地址FF:FF:FF:FF:FF:FF,PPPOE头中的CODE为0x09,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG,整个PPPOE包不能超过1484字节,这样省出的16字节可以由ADSL中继设备添加中继TAG。
   一个PADI包的例子为:
  
PPPoE认证技术介绍

   图4 PADI包
   3.3.3 PPPOE主动发现提议包
   PPPOE主动发现提议包(PPPoE Active Discovery Offer,PADO)由AC发出,用来回应客户机的PADI包,以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x07,SESSION_ID值必须为0,负载部分必须包含一个AC-Name类型的TAG,用来指示本AC的名称,一个在PADI包中指定的Service-Name的TAG,另外可以包含其他Service-Name的TAG。如果AC不对该客户机提供服务,AC就不回应PADO包。一个PADO包的例子为:
  
PPPoE认证技术介绍

   图5 PADO包
   3.3.4 PPPOE主动发现请求包
   PPPOE主动发现请求包(PPPoE Active Discovery Request,PADR)由客户机发出,因为可能会有多个AC对客户机发出的PADI包回应了PADO包,客户机从回应的PADO包中选择一个AC发送PADR包,以太头中的目的地址是该AC的MAC地址,PPPOE头中的CODE为0x19,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG。
   3.3.5 PPPOE主动发现会话确认包
   PPPOE主动发现会话确认包(PPPoE Active Discovery Session-confirmation,PADS)由AC发出,收到客户机的PADR包后,AC将产生一个SEESSION_ID值用来标志本次PPP会话,以PADR包方式发送给客户机。以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x65,SESSION_ID值必须为所生成的那个SESSION_ID,负载部分必须只包含一个Service-Name类型的TAG,表示该服务类型被AC接受,另外可以包含其他TAG。如果AC不接受PADR中的Server-Name,PADS中则包含一个Service-Name-Error类型的TAG,这时SESSION_ID设置为0。
   3.3.6 PPPOE主动发现停止包
   PPPOE主动发现停止包(PPPoE Active Discovery Terminate,PADT)表示PPPOE会话过程的结束,AC和客户机都可以主动发出。以太头中的目的地址是对方的MAC地址,PPPOE头中的CODE为0xa7,SESSION_ID值必须为PPPOE会话过程的SESSION_ID,不需要TAG。
   3.4 PPP会话
   在PPP会话阶段,PPP包被封装在PPPOE以太帧中,以太包目的地址都是单一的,以太协议为0x8864,PPPOE头的CODE必须为0,SESSION_ID必须一直为发现阶段协商出的SEESION_ID值,PPPOE的负载是整个PPP包,PPP包前是两字节的PPP协议ID值。
   一个PPPOE会话过程包的例子为:
  
PPPoE认证技术介绍

   图6 PPPoE会话过程包
   注意:由于PPPOE头是6字节,PPP协议ID号两个字节,一共要占用8个字节,而以太网的MTU值为1500,所以上层PPP负载数据不能超过1492字节,所以PPP协商时协商的最大接收单元值不能超过1492字节,也就是相当于在PPPOE环境下的MTU是1492字节。
   4. ADSL拨号过程简述
   客户机启动拨号程序,发送PADI包,ADSL MODEM回应PADO包,客户机再发送PADR包,ADSL MODEM回应PADS包后建立PPPOE通道,随后客户机进行普通的PPP协议拨号过程,不过PPP数据包都是包装进以太帧中的,拨号成功后客户机和服务器之间建立了PPP通道,ADSL MODEM起到将以太帧转换为PPP包的作用。ADSL虽然是用电话线,但所用频率不是通话用的频率,所以ADSL拨号不影响打电话。通信结束后,会发送PADT断开PPPOE通道。

返回顶部