PPPoE协议个人理解+报文示例+典型配置-RFC2516

news2024/10/6 23:42:54

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

因此本文将在PPPoE协议报文的基础上进行介绍。

PPPoE协议发展

  • 关于PPPoE基本原理,可参考1999年发布的《RFC2516-A Method for Transmitting PPP Over Ethernet》

相关资料

  • 关于PPPoE在巨帧场景下的使用,可参考2006年发布的《RFC4638-Accommodating a MTU/MRU Greater Than 1492 in the PPPoE》
  • 关于PPPoE的扩展使用,可参考2010年发布的《RFC5578-PPPoE Extensions for Credit Flow and Link Metrics》
  • 关于PPPoE协议不同字段的相关定义,可参考IANA发布的《Point-to-Point Over Ethernet (PPPoE) Parameters》
  • 关于PPP协议的相关参数,可参考IANA发布的《Point-to-Point (PPP) Protocol Field Assignments》
  • 关于常用Ethernet网类型,可参考IANA发布的IEEE 802 Numbers
  • 关于IPvX协议所使用的协议号,可参考IANA发布的Assigned Internet Protocol Numbers
  • 关于PPP协议的基本原理,可参考博客-PPP协议原理介绍+报文分析+配置指导-RFC1661

Note:个人能力有限,敬请各位指导。

目录

Point-to-Point Over Ethernet

  • 目录

  • 1.PPPoE协议
    • 1.1.PPPoE基本原理
    • 1.2.PPPoE帧格式
    • 1.3.PPPoE交互过程
  • 2.PPPoE典型配置
  • 更新

1.PPPoE协议

1.1.PPPoE基本原理

PPPoE (Point-to-Point Over Ethernet) 协议主要用于解决一个远程站点设备可以控制连接站点的多个设备主机,同时还可提供类似于使用 PPP 的拨号服务的方式的访问控制和计费功能。在许多接入技术中,Ethernet 网可以用最具成本效益的方法将多台主机连接到客户端接入设备。因此 PPPoE 协议应运而生。

通过 PPPoE 技术,每个用户主机可使用独立的 PPP 协议,实现基于用户的访问计费控制。同时又可具有良好的私密性。

PPPoE的两个阶段
Discovery stage:主机希望启动 PPPoE 会话时,它必须首先执行发现以识别对等体的 Ethernet MAC 地址并建立 PPPoE SESSION_ID。这一阶段称为 Discovery 阶段。

主机可以与之通信的 Access Concentrator 可能不止一个。因此协议允许其发现所有 Access Concentrator 后选择一个。随后主机和选定的 Access Concentrator 都将获得需要通过 Ethernet 建立点对点连接的信息。

PPP Session Stage:在 Discovery 阶段获取到 SESSION_ID 后,Session 阶段开始进行 PPP 协议交互。这一过程包括了 PPP 的 LCP 和 NCP 交互。上述交互都完成后,主机可正式开始访问网络资源。

PPP 协议的 LCP 阶段主要进行包括认证在内的链路协商,NCP 阶段主要进行包括 IP/DNS 地址在内网络资源协商。

由于以太网的最大负载大小为 1500 字节,PPPoE 报头为 6 个字节,PPP 协议 ID 为 2 个字节,因此 PPP MTU 不得大于 1492。

点击此处回到目录

1.2.PPPoE帧格式

PPPoE以太帧
在这里插入图片描述PPPoE 以太帧主要是将 PPP 帧作为 payload 封装于 Ethernet 帧中。同时以 0x8863 的 ETHER_TYPE 标识 Discovery Stage,以 0x8864 的 ETHER_TYPE 标识 PPP Session Stage。

Ethernet payload for PPPoE
在这里插入图片描述VER:4-bits,标识 PPPoE 协议版本。必须置 0x1。
TYPE:4-bits,必须置 0x1。
CODE:8-bits,取值取决于对应的阶段。

目前共约定义了10种左右的CODE值,此处仅介绍常用CODE
CODE=0x00:表示进入PPP Session Stage。
CODE=0x07:PADO,PPPoE Active Discovery Offer。
CODE=0x09:PADI,PPPoE Active Discovery Initiation。
CODE=0x19:PADR,PPPoE Active Discovery Request。
CODE=0x65:PADS,PPPoE Active Discovery Session-confirmation。
CODE=0xa7:PADT,PPPoE Active Discovery Terminate。

SESSION_ID:16-bits,在 Discovery 阶段的 PADS 报文中获取。并且对于给定的 PPP 会话为固定值。

实际上,它定义了 PPP 会话以及以太网 SOURCE_ADDR 和 DESTINATION_ADDR。值 0xffff 保留供将来使用,不得使用。

LENGTH:16-bits,排除了 Ethernet 和 PPPoE 头后的 PPPoE 载荷长。
payload:不定长

Discovery 阶段还可能额外携带TAG TLV:这些TAG可以用于额外标识用户信息。
在这里插入图片描述TAG_TYPE:16-bits,标识 TAG 类型。
TAG_LENGTH:16-bits,标识 TAG_LENGTH 的长度。
TAG_VALUE:不定长,取决于实际值。
自动换行
在此提供常用的PPPoE TAG Values
在这里插入图片描述关于 TAG 字段的详细含义可查看相关资料。

点击此处回到目录

1.3.PPPoE交互过程

在这里插入图片描述PPPoE交互过程如上图所示。

4步Discovery阶段
在这里插入图片描述PADI —> PADO —> PADR —> PADS。

1@PPPoE Active Discovery Initiation:CODE=0x09
首先,用户主机发送 PADI 数据包,并将 DMAC 设置为广播地址。CODE 字段设置为 0x09,SESSION_ID 必须设置为 0x0000。

PADI 数据包必须只包含一个 Service-Name TAG (TAG_TYPE = 0x0101),表示主机请求的服务,以及任意数量的其他 TAG 类型。整个 PADI 数据包包括 PPPoE 头不得超过 1484 位字节,以便为中继代理留出足够的空间来添加 Relay-Session-Id TAG (TAG_TYPE = 0x0110)。

在这里插入图片描述PADI 数据包示例。

2@PPPoE Active Discovery Offer:CODE=0x07
Access Concentrator 收到它可以服务的 PADI 时,它通过发送单播的 PADO 数据包进行回复。CODE 字段设置为 0x07,SESSION_ID 必须设置为 0x0000。

同时必须包含一个包含 Access Concentrator 名称的 AC-Name TAG (TAG_TYPE = 0x0101)、一个与 PADI 中 Service-Name TAG (TAG_TYPE = 0x0101) 相同的 Service-Name TAG,以及表示 Access Concentrator 可提供的其他服务的其他 TAG。

在这里插入图片描述PADO 数据包示例。

3@PPPoE Active Discovery Request:CODE=0x19
用户主机可能会收到多个 PADO,但仅查看它收到的 PADO 数据包并选择一个。用户主机可以根据 AC-Name 或提供的服务进行选择。随后,主机以一个 PADR 数据包进行单播回应。CODE 字段设置为 0x19,SESSION_ID 必须设置为 0x0000。

PADR 数据包必须只包含一个 Service-Name TAG (TAG_TYPE = 0x0101),表示主机请求的服务,以及任意数量的其他 TAG 类型。

在这里插入图片描述PADR 数据包示例。

4@PPPoE Active Discovery Session-confirmation:CODE=0x65
当 Access Concentrator 收到 PADR 数据包时,为 PPPoE 会话生成唯一的 SESSION_ID,并使用 PADS 数据包单播回复主机。CODE 字段设置为 0x65,并且 SESSION_ID 必须设置为为此 PPPoE 会话生成的唯一值

PADS 数据包只包含一个 Service-Name TAG (TAG_TYPE = 0x0101),指示可提供接受 PPPoE 会话的服务,以及任意数量的其他 TAG 类型。如果 Access Concentrator 不喜欢 PADR 中的 Service-Name,则它必须回复包含 Service-Name-Error (TAG_TYPE = 0x0201,以及任意数量的其他 TAG 类型) 的 PADS 数据包。同时在这种情况下,SESSION_ID 必须设置为 0x0000。

在这里插入图片描述PADS 数据包示例。

5@PPPoE的终止PPPoE Active Discovery Terminate:CODE=0xA7
PADT 数据包可以在建立会话后的任何时间发送,以指示 PPPoE 会话已终止。并且不限制发送方。CODE 字段设置为 0xa7,并且必须设置 SESSION_ID 以指示要终止的会话。

PADT 数据包不需要 TAG。 收到 PADT 后,不允许使用该会话发送进一步的 PPP 流量。即使是普通的 PPP termination 数据包,在发送或接收 PADT 后也不得发送。 PPP 对等体应该使用 PPP 协议来关闭 PPPoE 会话,但是当 PPP 不能使用时,可以使用 PADT。

在这里插入图片描述PADT 数据包示例。

PPPoE的PPP Session Stage阶段
在完成 PPPoE 的发现阶段后,将进入 PPP 会话阶段。在此阶段将先进行 PPP 的 LCP (Link Control Protocol,链路控制协议) 进行链路协商。随后进入 NCP (Network Control Protocols,网络控制协议),以便完成 IP/DNS 在内的网络层协议协商。最终在 NLP (Network Layer Protocols,网络层协议) 中进行真正的业务报文交互。

关于 PPP 协议的基本原理,可参考博客-PPP协议原理介绍+报文分析+配置指导-RFC1661

在这里插入图片描述PPPoE的PPP Session Stage阶段报文示例。

在此阶段,需要将 ETHER_TYPE 字段设置为 0x8864,PPPoE CODE 设置为 0x00。并且该 PPPoE 会话的 SESSION_ID 不得更改,并且必须是在 Discovery 阶段分配的值。PPPoE 的 PPP 帧以 PPP 协议 ID 开头。

在这里插入图片描述PPP 协议 ID 为 0xc021 时表示 LCP 协议。
在这里插入图片描述PPP 协议 ID 为 0x0021 时表示 NLP 交互的 IPv4 协议。

其他需要注意的内容

  1. 由于以太网的最大负载大小为 1500 字节,PPPoE 报头为 6 个字节,PPP 协议 ID 为 2 个字节,因此 PPP MTU 不得大于 1492。
  2. 当主机在指定时间内没有收到 PADO 数据包时,它应该重新发送 PADI 数据包并将等待时间加倍。根据需要重复多次此操作。
  3. 如果主机正在等待接收 PADS 数据包,则应使用类似的超时机制,以便在未收到 PADS 数据包时重新发送 PADR。在指定的重试次数后,主机应该重新发送 PADI 数据包。

点击此处回到目录

2.PPPoE典型配置

在这里插入图片描述这里以上图为例,进行 PPPoE 的相关介绍。

AR1:
interface Dialer0
 link-protocol ppp
 ppp ipcp default-route
 ppp chap user pppoe-1
 ppp chap password cipher pppoe-1
 ppp timer negotiate 5
 ppp ipcp dns request
 timer hold 20
 ip address ppp-negotiate
 dialer user pppoe-1
 dialer bundle 1
 dialer number 1111
 dialer timer enable 6
 dialer-group 1
#
interface GigabitEthernet0/0/0
 pppoe-client dial-bundle-number 1 
#

AR2:
aaa 
 local-user pppoe-1 password cipher pppoe-1
 local-user pppoe-1 service-type ppp
#
interface Virtual-Template1
 ppp authentication-mode chap 
 remote address pool pool-pppoe
 ppp ipcp remote-address forced
 ppp ipcp default-route
 ppp timer negotiate 5
 ppp ipcp dns 8.8.8.8 114.114.114.114
 timer hold 20
 ip address 192.168.1.1 255.255.255.0 
#
interface GigabitEthernet0/0/0
 pppoe-server bind Virtual-Template 1
#

在这里插入图片描述display pppoe-server session all 用于查看相应的 PPPoE 信息。

点击此处回到目录

更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

class 031 位运算的骚操作

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

8649 图的广度遍历

### 思路 1. **图的邻接表存储结构**:使用邻接表存储图的顶点和边信息。 2. **基本操作函数**:包括创建图、查找顶点、获取顶点值、获取第一个邻接顶点、获取下一个邻接顶点等。 3. **广度优先遍历(BFS)**:从某个顶点出…

LPDDR6 来之未远

很多朋友可能还没用上DDR5,但不好意思的是,DDR6 可能马上就要出现了。 三星和海力士较早开始DDR6 的设计,预计2025年商业化。 DDR6 速度 来源: 半导体观察 DDR6的速度将是主流的DDR4的四倍,将是现有DDR5的两倍,DDR6传输速度可达12800 Mbps。 LPDDR6 来源:快科技 L…

OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…

功耗电流图的对比技巧

电流波形对比 使用系统画图工具的反色和透明设置项目,就可以将2张图合在一块看 方法【系统画图工具】 例如在相同的测试用例,可以对比电流和耗电量的差异

3.使用条件语句编写存储过程(3/10)

引言 在现代数据库管理系统中,存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句,这些语句被保存在数据库中,可以被重复调用。存储过程不仅可以提高数据库操作的效率,还可以增强数据的安全性和一致性。此…

Python3 爬虫 中间人爬虫

中间人(Man-in-the-Middle,MITM)攻击是指攻击者与通信的两端分别创建独立的联系,并交换其所收到的数据,使通信的两端认为其正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中…

LCD屏入门(基于ESP-IDF、SPI屏)

主要参考资料: ESP32-S3 开发 SPI 屏【DIY 智能手表】: https://www.bilibili.com/video/BV1Yc411y7bb/?spm_id_from333.337.search-card.all.click&vd_sourcedd284033cd0c4d1f3f59a2cd40ae4ef9 使用 SPI 屏和 I2C 触屏运行 SquareLine Studio 提供的手表 UI 示…

突触可塑性与STDP:神经网络中的自我调整机制

突触可塑性与STDP:神经网络中的自我调整机制 在神经网络的学习过程中,突触可塑性(Synaptic Plasticity)是指神经元之间的连接强度(突触权重)随着时间的推移而动态变化的能力。这种调整机制使神经网络能够通…

链动 2+1 模式 S2B2C 商城小程序:交易转化的创新引擎

摘要 在数字化商业时代,电商行业竞争激烈,交易转化成为核心问题。链动 21 模式 S2B2C 商城小程序源码作为创新电商模式,通过独特的推荐与分享机制、丰富奖励机制、AI 智能名片及 S2B2C 商城的个性化定制与供应链协同等,在交易转化…

redis+mysql数据一致性+缓存穿透解决方案

在分布式事务中我们知道有cap定理,即 我们保证高可用的情况下,必然要牺牲一些一致性,在保证强一致性的情况下,必然会牺牲一些可用性。而我们redismysql数据一致性的使用策略就是在我们保证可用性的情况下尽量保证数据的一致性。想…

MySql的基本语法操作

查看数据库和表 查看所有的数据库 show databases; 建立一个新的数据库 create database database_name; 也可以是 create database if not exists database_name; 表示这个数据库不存在才建立 而不会打断其他sql语句的执行,而如果没有加的话,创建…

神经网络及大模型科普揭秘

一、生物神经元及神经元构成的神经网络 下图是生物神经元的示意图: 生物神经元由细胞体、树突、轴突、轴突末梢四部分构成。 下图是生物神经网络的一个简单示意图: 生物神经元通过电信号在彼此间传递信号,神经元的各个树突接收输入信号,经过细胞体汇总,如果最终总和高…

【动态规划-最长公共子序列(LCS)】力扣97. 交错字符串

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t t1 t2 … tm |n - m| < 1 交错 是 s1…

【微服务】服务注册与发现 - Eureka(day3)

CAP理论 P是分区容错性。简单来说&#xff0c;分区容错性表示分布式服务中一个节点挂掉了&#xff0c;并不影响其他节点对外提供服务。也就是一台服务器出错了&#xff0c;仍然可以对外进行响应&#xff0c;不会因为某一台服务器出错而导致所有的请求都无法响应。综上所述&…

网络安全概述:从认知到实践

一、定义 网络安全&#xff0c;即致力于保护网络系统所涵盖的硬件、软件以及各类数据&#xff0c;切实保障其免遭破坏、泄露或者篡改等不良情形的发生。 二、重要性 个人层面&#xff1a;着重于守护个人隐私以及财产安全&#xff0c;为个人在网络世界中的各项活动提供坚实的保…

分享几个做题网站------学习网------工具网;

以下是就是做题网站&#xff1b;趣IT官网-互联网求职刷题神器趣IT——互联网在线刷题学习平台&#xff0c;汇集互联网大厂面试真题&#xff0c;拥有java、C、Python、前端、产品经理、软件测试、新媒体运营等多个热门IT岗位面试笔试题库&#xff0c;提供能力测评、面试刷题、笔…

Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片

小扎在 Meta Connect 2024 主题演讲中宣布推出首个多模态大模型 Llama 3.2 vision&#xff01;该模型有 11B 和 90B 两个版本&#xff0c;成为首批支持多模态任务的 Llama 系列模型&#xff0c;根据官方数据&#xff0c;这两个开原模型的性能已超越闭源模型。 小编已经迫不及待…

算法修炼之路之二分查找

目录 一:三大二分介绍及模板 1.普通二分 2.查找左右边界的二分及模板 二:LeetCode OJ练习 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 一:三大二分介绍及模板 1.普通二分 这里通过一道题来引出普通二分及模板 LeetCode_704 二分查找 画图分析: 具体代…

AI 大模型的核心能力与应用场景全解析

深入理解 AI 大模型&#xff1a;核心能力与应用场景全解析 AI大模型是什么 通过概念考察的方式了解AI大模型&#xff0c;拆开来看。 AI领域术语丰富&#xff0c;涵盖模式识别、自然语言处理、神经网络、机器学习、深度学习、强化学习及人类反馈强化学习。大模型&#xff1a;把…