PPPoE 是什么?

2022-4-22

以太网点对点协议(PPPoE)集成了最经济的局域网技术——以太网和点对点(P2P)协议的可扩展性和管理控制功能。通常,在传统的以太网、接入网或PON 系统中,网络服务提供商和电信运营商可以使用可靠和熟悉的技术来加速高速互联网(HSI)服务的部署。PPPoE 使服务提供商可以更轻松地提供支持使用数字用户线无线连接的多个用户的宽带接入服务。

PPPoE基本原理

PPPoE 协议提供了一个标准,用于将广播网络(例如以太网)中的多个主机连接到远程访问集中器(也称为宽带访问服务器)。在这种网络模型中,每个用户主机都需要独立初始化自己的 PPP 协议栈。此外,利用 PPP 协议的特性,可以在广播网络上对用户进行计费和管理。为了在广播网络上的主机和访问集中器之间建立和维护 P2P 关系,必须在每个主机和访问集中器之间建立唯一的 P2P 会话。

PPPoE 数据包

PPPoE 初始化过程非常重要。它不仅需要确定广播网络上一对一的逻辑关系,还要为PPPoE会话准备必要的条件,例如接入集中器分配的唯一会话ID。在介绍 PPPoE 之前,我们先回顾一下以太网帧的封装格式。所有 PPPoE 数据包都封装在以太网帧的数据域(有效载荷区)中进行传输。

以太网目的地址(DMAC)和以太网源地址(SMAC)是最常用的数据链路层地址。它们分为单播地址、多播地址和广播地址。

PPPoE 协议中使用单播和广播地址。对于PPP等数据链路层协议,二层地址通信不同于普通二层通信。

以太网类型字段也是最受关注的字段之一。PPPoE 的两个阶段通过以太网数据包的类型字段来区分。在 PPPoE 发现阶段,以太网类型字段设置为 0x8863。在 PPPoE 会话阶段,该字段设置为 Ox8864。

一个数据域(payload)携带type域所指示的数据包 PPPoE协议中的所有PPPoE数据包都封装在这个域中进行传输。

验证字段用于保证链路层数据帧传输的正确性。

PPPoE 会话建立过程


PPPoE 可以分为三个阶段:发现、会话和会话终止

当主机想要启动一个PPPoE会话时,它需要执行一个发现过程来识别对端的MAC地址,然后确定一个唯一的PPPoE会话ID。为此,PPPoE 使用基于客户端/服务器模型的发现协议。由于以太网的广播特性,主机(客户端)在这个过程中发现所有的接入集中器(服务器),从中选择一个,并根据获得的信息与对端建立P2P连接。建立 PPP 会话后,PPPoE 发现阶段就完成了。

PPPoE会话阶段开始后,主机和接入集中器基于PPP协议传输PPP数据,进行PPP协商和数据传输。在这个阶段传输的数据包必须始终包含在发现阶段确定的会话标识符。在正常情况下,会话阶段由 PPP 协议终止。然而,在 PPPoE 中也定义了一个 PADT 数据包来终止会话。主机或访问集中器可以在 PPP 会话开始后的任何时间通过发送数据包来终止会话。

PPPoE 发现阶段的数据包分类

PPPoE PADI

客户端广播 PADI 数据包以发现访问服务器。

目的地址是广播地址FF:FF:FF:FF:FF:FF,源地址是主机的以太网地址。ETHER_TYPE 的值为 0x8863,code 值为 Ox09,SESSION-ID 的值为 0x0000。TAG_TYPE:只有一个 Service Name 表示主机请求的服务 可以有任意数量的其他标签。

PPPoE PADO


所有 PPPoE 服务器收到 PADI 报文后,将客户端请求的服务与 PPPOE 服务器可以提供的服务进行比较。如果可以提供服务,PPPoE 服务器以单播模式响应 PADO 数据包。

目的地址是主机的以太网地址。源地址是接入集中器的以太网地址。ETHER_TYPE的值为0x8863,code值为Ox07,SESSION-ID的值为0x0000。TAG_TYPE 的值必须有一个包含接入集中器名称的 AC-Name TAG。它必须包含一个与接收到的 PADI 相同的 Service-Name TAG,以及任何数量的其他 Service-Name TAG,指示集中器可以提供的服务。

PPPoE PADR


PPPoE Client 选择PADD 报文最先到达的PPPoE 服务器,并以单播方式返回PADR 报文。

目的地址是接入集中器的以太网地址,源地址是主机的以太网地址。ETHER_TYPE的值为0x8863,code值为Ox19,SESSION-ID的值为Ox0000。TAG_TYPE 的值必须包含服务名称类型的 TAG,以指定从集中器请求的服务。可以有任意数量的其他标签。

PPPoE 垫


PPPoE 服务器生成一个唯一的 PPPoE Session ID 并向客户端发送一个 PADS 数据包。会话设置成功。

目的地址是主机的以太网地址,源地址是接入集中器的以太网地址。ETHER_TYPE的值为Ox8863,code值为Ox65,SESSION-ID的值为集中器指定的唯一值,用于标识一个PPPoE会话。TAG_TYPE:包含Service-Name类型的标签,表示提供的服务由集中器参加会议。可以有任意数量的其他标签 会话建立后,PPPoE 客户端和服务器进入 PPPoE 会话阶段。

PPPoE 会话阶段


PPPoE会话的PPP协商成功后,即可传输PPP数据。

PPPoE会话建立后,主机和接入设备之间基于PPP协议传输PPP数据。每个以太网帧都有一个地址。ETHER_TYPE的值为Ox8864,code值为Ox00,SESSION-ID的值在整个会话期间保持不变。PPPOE 有效载荷字段包含一个 PPP 数据包。

PPPoE 垫板

APADT 报文用于通知对端 PPPoE 会话终止。

该数据包可以在会话建立后的任何时间由主机或集中器发送。目标地址是单个以太网地址。ETHER_TYPE 的值为 0x8863,code 值为 Oxa7,SESSION-ID 的值为要终止的会话的 SESSION-ID。不需要标记。

在 PADT 包中,目的 MAC 地址是单播地址,会话 ID 是要关闭的连接的会话 ID。一旦收到 PADT 数据包,连接就会关闭。

示例 PPPoE-CHAP

一般单用户或家庭用户使用PPPoE上网。RADIUS认证通过后,用户从BRAS获取IP地址。

1. 客户端向服务器发送PADI包,开始PPPoE接入。

2. 服务器向客户端发送一个PADO 数据包。

3. 客户端向服务器发送一个 PADR 数据包。

4. 服务器生成会话ID,通过PADS发送给客户端。

5. 客户端和服务器进行PPP LCP协商,建立链路层连接。另外,使用CHAP认证。

6. 服务器向认证客户端发送一个 128 位的 Challenge 报文。

7. 客户端收到challenge包后,对password和challenge进行MD5算法,将password和challenge发送给服务器作为响应包。

8. 服务器将challenge 和用户名发送给RADIUS 服务器进行认证。

9. RADIUS服务器根据用户信息判断用户是否被授权,并向服务器发送认证成功/失败报文。如果认证成功,则AAA服务器发送带有协商参数和业务属性的消息对用户进行授权。如果认证失败,则该过程结束。

10. 服务器将认证结果返回给客户端。

11. 用户进行NCP(如IPCP)协商,通过服务器获取IP地址等规划参数。

与我们的专家取得联系

告诉我们您的业务需求,我们会找到完美的解决方案

联系我们
Clicky