PPPOE

PPPOE

计算机科技术语
PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议[1]。由于协议中集成PPP协议,所以实现出传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(cable modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。
    中文名:PPPOE 外文名: 所属学科:计算机 适用:ADSL等 定义:基于以太网的点对点通讯协议

工作原理

PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。

当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,以识别局端的以太网MAC地址,并建立一个PPPoE SESSION-ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的Client/Server(客户/服务器)模式。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。

PPPoE协议会话的发现和会话两个阶段具体进程如下。

发现阶段

在发现(Discovery)阶段中用户主机以类似广播的方式寻找所连接的所有接入集中器(或交换机),并获得其以太网MAC地址。然后选择需要访问的接入集中器,并确定所要建立的PPP会话唯一标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoE SESSION-ID和对端的以太网地址,他们一起唯一定义PPPoE会话。这4个步骤如下。

接入集中器收到在服务范围内的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会话阶段。

会话阶段

用户主机与接入集中器根据在发现阶段所协商的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。

验证过程

假如客户端要通过一个局域网与远程的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一定不能改变,并且必须是发现阶段分配的值。

发展前景

PPPoE是从窄带技术演化而来,PPP最早就是专门为电话线上网而设计的,当宽带普及后,为了兼容以前的电话线用户习惯,故在宽带网络中继承了PPP技术。PPPoE是一种过渡技术,目前已经基本处于淘汰阶段。原因如下:

PPPoE是一种2层链路技术,正常下无法穿透三层交换机,若要在三层交换机传输,就必须做trunk,即把三层当作二层交换机使用。这导致不能充分发挥三层交换机的潜能,三层交换机的很多高级功能都无法使用,从而浪费了宝贵的网络设备资源。也给整体网络规划造成了一定的复杂性。如果一开始采用了PPPoE认证,那么以后想要使用三层交换机网络规划功能,调整整体网络,那么将是一个巨大的工作量。

宽带使用PPPoE方式,将造成不必要的带宽损耗,而且上网速度比正常宽带速度要慢一个级别。原因是采用PPPoE比正常宽带包,多了2个协议层,一个是PPPoE协议层,另一个就是PPP协议层,这几个协议层头会增加到正常数据包头部里,在传输数据过程中,多出了不少额外数据,拨号握手过程也比正常多了好几个步骤。

2004年开始,ARP攻击在网络流行时,PPPoE由于自身与ARP无关的特点,使其具有天然免疫优势,所以,当时很多场合对PPPoE有较高的需求。

但经过近10年网络发展,随着各种安全软件普及,如360、电脑管家、以及各种杀毒软件等都早已具有防止ARP攻击功能。因此,ARP攻击已经彻底消失殆尽。PPPoE的各种缺点已经越来越不适应宽带网络的发展。

PPPoE客户端一般都会采用操作系统自带的PPPoE,但设置比较麻烦,有很多步骤,普通家庭用户若不熟悉,大多数根本搞不定,此时维护人员必须挨家挨户进行上门设置,这给网络维护带来了很大工作量。非常不利宽带网络用户的发展和运营,将经常接到用户关于PPPoE的使用投诉。

PPPoE的效率比较低,从PPPoE协议模型可以看出,BAS汇聚了用户的所有数据流,它必须将每一个PPPoE包都拆开检查处理,这在很大程度上是沿袭了传统的PPP处理的方式,一旦用户很多,数据包数量很大,解封装速度就需要很快,BAS很大的精力花在检测用户的数据包上,容易形成接入的“瓶颈”。

PPPoE由于采用了二层链路方式,所以在防止ARP三层包攻击方式具有很大安全性,但PPPoE自身却存在着协议不安全性,因为PPPoE认证是采用广播方式,在网段内只要装个网络嗅探器,都能截获到PPPoE包,并能做任意修改重定向。关于PPPoE安全漏洞详细描述见最后参考资料《PPPoE验证缺陷所带来的危害》。

相关词条

相关搜索

其它词条