PPPoE原理与配置方法

2023-11-13

一、PPPoE原理

数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPP over Ethernet)协议。 PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器上。PPPoE具有适用范围广、安全性高、计费方便等特点。

1.1 DSL简介

  • 数字用户线路DSL是以电话线为传输介质的传输技术。

在这里插入图片描述
DSL是一种利用现有电话网络实现数据通信的宽带技术。在使用DSL接入网络时,用户侧会安装调制解调器,然后通过现有的电话线与数字用户线路接入复用器(DSLAM)相连。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备。
然后,DSLAM通过高速ATM网络或者以太网将用户的数据流量转发给宽带远程接入服务器(BRAS)。BRAS是面向宽带网络应用的接入网关,位于骨干网的边缘层。

1.2 PPPoE在DSL中的应用

在这里插入图片描述
运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。PPPoE技术解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并被广泛应用。

1.3 PPPoE报文

  • PPPoE报文是使用Ethernet格式来进行封装的。

在这里插入图片描述

字段 释义
DMAC 表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)
SMAC 表示源设备的以太网MAC地址
Type 表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文
  • PPPoE字段中的各个字段解释如下:
字段 释义
VER 表示PPPoE版本号,值为0x01
Type 表示类型,值为0x01
Code 表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型
Sessions ID PPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话
Length 表示PPPoE报文的Payload长度,不包括以太网头部和PPPoE头部的长度

1.4 PPPoE会话建立过程

PPPoE可分为三个阶段,即发现阶段、会话阶段和会话终结阶段。
在这里插入图片描述
PPPoE会话过程使用的报文:

  • PADI(PPPoE Active Discovery Initiation)报文:用户主机发起的PPPoE服务器探测报文,目的MAC地址为广播地址。
  • PADO(PPPoE Active Discovery Offer)报文:PPPoE服务器收到PADI报文之后的回应报文,目的MAC地址为客户端主机的MAC地址。
  • PADR(PPPoE Active Discovery Request)报文:用户主机收到PPPoE服务器回应的PADO报文后,单播发起的请求报文,目的地址为此用户选定的那个PPPoE服务器的MAC地址。
  • PADS(PPPoE Active Discovery Session Configuration)报文:PPPoE服务器分配一个唯一的会话进程ID,并通过PADS报文发送给主机。
  • PADT(PPPoE Active Discovery Terminate)报文:当用户或者服务器需要终止会话时,可以发送这种PADT报文。

在这里插入图片描述

  1. 用户客户端向服务器发送一个PADI报文,开始PPPOE接入。
  2. 服务器向客户端发送PADO报文。
  3. 客户端根据回应,发起PADR请求给服务器。
  4. 服务器产生一个Session ID,通过PADS发给客户端。
  5. 客户端和服务器之间进行PPP的LCP协商,建立链路层通信。同时,协商使用CHAP认证方式。
  6. 服务器通过Challenge报文发送给认证客户端,提供一个128bit的Challenge。
  7. 客户端收到Challenge报文后,并将密码和Challenge做MD5算法运算后,在Response回应报文中把结果发送给服务器。
  8. 服务器根据用户发送的信息判断用户是否合法,然后回应认证成功/失败报文,将认证结果返回给客户端。
  9. 进行NCP(如IPCP)协商,通过服务器获取到规划的IP地址等参数。

1.4.1 PPPoE发现阶段

Step:One
  • 客户端通过广播发送PADI报文来发现接入服务器。
    在这里插入图片描述
    在发现阶段,PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息。在PADI报文中,目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000。所有PPPoE服务器收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较。
Step:two
  • 所有的PPPoE 服务器在收到PADI报文之后,将客户端请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复PADO报文。

在这里插入图片描述
如果服务器可以提供客户端请求的服务,就会回复一个PADO报文。客户端(RTA)可能会收到多个PPPoE服务器发送的PADO报文。在PADO报文中,目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000。

Step:Three
  • PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并单播发送一个PADR报文。
  • 在这里插入图片描述
    因为PPPoE客户端是以广播的形式发送PADI报文,所以客户端可能会收到多个PADO报文。在接收到的所有PADO报文中,PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并发送一个PADR报文给这个服务器。在PADR报文中,目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000。
Step:Four
  • PPPoE服务器生成唯一的PPPoE Session ID,并发送PADS报文给客户端,会话建立成功。

在这里插入图片描述
PPPoE服务器收到PADR报文后,会生成一个唯一的Session ID来标识和PPPoE客户端的会话,并通过一个PADS报文把Session ID发送给PPPoE客户端。在PADS报文中,目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器为本PPPoE会话产生的Session ID。会话建立成功后,PPPoE客户端和服务器进入PPPoE会话阶段。

1.4.2 PPPoE会话阶段

  • PPPoE会话上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
  • PPPoE会话的PPP协商成功后,就可以传输PPP数据。
    在这里插入图片描述
  1. PPPoE会话阶段可分为两部分:PPP协商阶段和PPP报文传输阶段。
    PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。LCP阶段主要完成建立、配置和检测数据链路连接。LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果决定。认证成功后,PPP进入NCP阶段,NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP地址和DNS服务器地址等。
  2. PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的Session ID并保持不变。

1.4.3 PPPoE会话终结

  • PADT报文用于通知对端PPPoE会话结束。
    在这里插入图片描述
    当PPPOE客户端希望关闭连接时,可以向PPPOE服务器端发送一个PADT报文。同样,如果PPPOE服务器端希望关闭连接时,也可以向PPPOE客户端发送一个PADT报文,此报文用于关闭连接。
    在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后,连接随即关闭。

二、PPPoE配置方法

实验拓扑:
在这里插入图片描述
PPPoE-Service:

<Huawei>system-view
[Huawei]sysname  PPPoE-Service
[PPPoE-Service]ip pool pppoe
[PPPoE-Service-ip-pool-pppoe]network 192.168.1.0 mask 255.255.255.0
[PPPoE-Service-ip-pool-pppoe]gateway-list 192.168.1.1 
[PPPoE-Service-ip-pool-pppoe]quit
[PPPoE-Service]interface Virtual-Template 1
[PPPoE-Service-Virtual-Template1]ppp authentication-mode pap
[PPPoE-Service-Virtual-Template1]remote address pool pppoe
[PPPoE-Service-Virtual-Template1]ppp ipcp default-route
[PPPoE-Service-Virtual-Template1]ppp ipcp dns 8.8.8.8
[PPPoE-Service-Virtual-Template1]ip address 192.168.1.1 255.255.255.0
[PPPoE-Service-Virtual-Template1]quit
[PPPoE-Service]aaa
[PPPoE-Service-aaa]local-user pppoe password cipher 123456
[PPPoE-Service-aaa] local-user pppoe service-type ppp
[PPPoE-Service]interface GigabitEthernet 0/0/0
[PPPoE-Service-GigabitEthernet0/0/0]pppoe-server bind Virtual-Template 1
[PPPoE-Service-GigabitEthernet0/0/0]quit
[PPPoE-Service]interface LoopBack 0    # 模拟ISP外网
[PPPoE-Service-LoopBack0]ip address 172.16.1.1 255.255.255.255 
[PPPoE-Service-LoopBack0]quit
[PPPoE-Service]ip route-static 192.168.2.1 255.255.255.0 GigabitEthernet 0/0/0

PPPoE-Client:

<Huawei>system-view
[Huawei]sysname  PPPoE-Clienct
[PPPoE-Client]dialer-rule      #进入dialer-rule视图
[PPPoE-Client-dialer-rule]dialer-rule 1 ip permit #允许ip流量触发拨号
[PPPoE-Client-dialer-rule]quit
[PPPoE-Client]interface Dialer 1 # 创建一个用于拨号的虚接口
[PPPoE-Client-Dialer1]link-protocol ppp
[PPPoE-Client-Dialer1]ppp pap local-user pppoe password cipher 123456
[PPPoE-Client-Dialer1] ip address ppp-negotiate
[PPPoE-Client-Dialer1] mtu 1492
[PPPoE-Client-Dialer1] dialer user pppoe
[PPPoE-Client-Dialer1] dialer bundle 1
[PPPoE-Client-Dialer1] dialer-group 1
[PPPoE-Client-Dialer1]quit
[PPPoE-Client]interface GigabitEthernet 0/0/0
[PPPoE-Client-GigabitEthernet0/0/0]pppoe-client dial-bundle-number 1
[PPPoE-Client-GigabitEthernet0/0/0]quit
[PPPoE-Client]interface GigabitEthernet 0/0/1
[PPPoE-Client-GigabitEthernet0/0/1]ip address 192.168.2.1 255.255.255.0
[PPPoE-Client-GigabitEthernet0/0/1]dhcp select interface
[PPPoE-Client-GigabitEthernet0/0/1]dhcp server lease day 3
[PPPoE-Client-GigabitEthernet0/0/1]dhcp server dns-list 8.8.8.8
[PPPoE-Client-GigabitEthernet0/0/1]quit
[PPPoE-Client]ip route-static 0.0.0.0 0.0.0.0 Dialer 1

实验结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PPPoE原理与配置方法 的相关文章

  • openwrt路由器不断重启问题原因

    重新烧固件之后 openwrt不断重启 df h一看root的空间已满 这说明了原因是flash存储容量不够了 减掉一些不需要的功能重新编译烧固件 或者增加存储来解决吧
  • 跟踪路由 Tracert

    跟踪路由 Tracert 2007年04月20日 09 03 A M Tracert 跟踪路由 是路由跟踪实用程序 用于确定 IP 数据报访问目标所采取的路径 Tracert 命令用 IP 生存时间 TTL 字段和 ICMP 错误消息来确定
  • 5.ARP协议

    1 前言 当网络设备需要有数据要发送给另一台网络设备时 必须要知道对方的网络层地址 即IP地址 IP地址由网络层来提供 但是仅有IP地址是不够的 IP数据报文必须封装成帧才能通过数据链进行发送 数据帧必须要包含目的MAC地址 因此发送端还必
  • 数据包在网络中的传输过程详解

    我们当今使用电子设备都离不开网络 通过网络我们可以聊天 玩游戏 看电影都操作 网络的本质就是交换数据 本文我们就来看下数据是如何在网络中传输的 计算机网络模型 现在有两种计算机网络模型 分别为OSI七层模型和TCP IP四层模型 OSI将计
  • Linux Traceroute命令教程和示例

    The network is an important part of the system administration Because without a network the server has nothing to do Whi
  • 合理设置的MTU值,解决“部分网站打不开”“上网速度慢”等问题,并且可以适当提升上网速度

    一般来讲 设计好本机的MTU值 可以解决 部分网站打不开 上网速度慢 的情况 但是如果你的共享主机或路由器的MTU设置有问题 有时问题仍然存或 或者出现网速过慢的情况 合理的设置路由器与本机的MTU值 就可以完全解决上述问题 使上网速度达到
  • TCP/IP网络编程之四书五经

    TCP IP网络编程之四书五经 http blog chinaunix net u 24935 showart 330099 html http book csdn net bookfiles 69 100691972 shtml http
  • 交换机与路由器技术-05-路由器工作原理

    目录 一 路由器的工作原理 1 1 回顾交换机的工作原理 1 2 回顾路由器相关知识 1 3 网络层IP数据包格式 二 路由器工作原理 2 1 路由 2 2 路由器工作模式 2 3 路由表 2 4 静态路由 2 5 动态路由 2 6 分层次
  • show process cpu

    Router show proc cpu CPU utilization for five seconds 63 50 one minute 58 five minutes 58 PID Runtime ms Invoked uSecs 5
  • 路由追踪tracert命令

    路由追踪tracert命令Tracert 跟踪路由 是路由跟踪实用程序 用于确定 IP 数据报访问目标所采取的路径 Tracert 命令用 IP 生存时间 TTL 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由 这点和pi
  • 关于IP网段间互访的问题——路由是根本

    文章出处 http blog csdn net dog250 archive 2010 02 09 5303291 aspx 之所以IP网段间可以互相访问 完全靠的就是路由 因此路由是IP通信的根本 IP是机器可以进行通信的资格证书 而路由
  • INADDR_ANY的用法

    INADDR ANY就是指定地址为0 0 0 0的地址 这个地址事实上表示不确定地址 或 所有地址 任意地址 一般来说 在各个系统中均定义成为0值 例如MontiVista Linux中在 usr include netinet in h定
  • 360周鸿祎:互联网好产品六字法则——刚需、痛点、高频

    如何找到好的产品 它必须满足三个条件 刚需 痛点 高频 6月6号 奇虎360创始人董事长兼CEO周鸿祎走上颠覆式创新研习社的讲台 以他的产品经历 带来移动互联网产品观 干货满满 全程无尿点 课程实录分为上 下两部分 研习社根据演讲整理 未经
  • TCP/IP协议栈与数据包封装

    TCP IP网络协议栈分为应用层 Application 传输层 Transport 网络层 Network 和链路层 Link 四层 如下图所示 该图出自 TCPIP 图 36 1 TCP IP协议栈 两台计算机通过TCP IP协议通讯的
  • 子网掩码详解

    一 子网掩码的概念及作用 子网掩码 subnet mask 又叫网络掩码 地址掩码 子网络遮罩 是一个应用于 TCP IP 网络的 32 位二进制值 它可以屏蔽掉 IP 地址中的一部分 从而分离出 IP 地址中的网络部分与主机部分 基于子网
  • 利用树莓派搭建简易服务器

    读研以来笔者一直负责实验室的网络维护 可以说是实验室名副其实的首席大网管 整个实验室是从学校网络中心购买了一个教育网的公网IP地址和带宽 公网IP绑定了实验室的主路由器 而主路由器就在笔者卡位的旁边 有一天笔者突发奇想 拿了手头的树莓派3结
  • Newifi3(新路由3)刷潘多拉(Pandora)固件

    最近在淘宝入手了一个二手的newifi3 主要是因为它内存大 而且性价比相当高 512M的ddr2和32M的flash买下来才100左右 下面介绍如何刷 Pandora固件 步骤 1 找一根网线 一端插入路由器wan口 一端插入电脑 把电脑
  • IP(OSPF综合实验)

    一 实验 1 R4为ISP 其上只能配置IP地址 R4与其他所有直连设备间使用公有IP 2 R3 R5 6 7为MGRE环境 R3为中心站点 3 整个OSPF环境IP地址自定义 4 所有设备均可访问R4的环回 5 减少LSA的更新量 优化
  • IP数据包格式各字段详解说明

    1 版本 指IP协议的版本 为0100或0110 即IPv4和IPv6两种版本 通信双方使用的IP协议版本必须一致 2 首部长度 占 4 位 可表示的最大十进制数值是15 请注意 这个字段所表示数的单位是32位字 即0001表示1个32位字
  • make menuconfig报错:Build dependency: Please install Git (git-core) >= 1.6.5

    版本号为chaos calmer 15 05 1 注意 在执行make menuconfig的时候 会报一个错误 如下 Build dependency Please install Git git core gt 1 6 5 这是open

随机推荐

  • 双指针算法

    目录 一 双指针算法的概念 二 双指针算法的应用 1 拆分字符串中的单词 2 最长连续不重复子序列 题目 朴素算法 双指针算法 另类双指针算法 3 数组元素的目标和 题目 代码实现 4 判断子序列 题目 代码实现 一 双指针算法的概念 核心
  • 提升网速 网卡和驱动

    去某宝下单了 是网卡和驱动的问题 某宝说网卡和驱动是一个意思 以下是操作步骤 更新驱动程序后从联想官网下载本台电脑对应的驱动 下载可以识别自己主机编号的软件 主机信息识别工具 然后获取编号 然后下载自己的有线网卡
  • 使用VS2010编写Linux程序

    使用VS2010开发Linux程序的好处 编写和调试都很方便 甚至不用自己编写Makefile文件 系统直接就生成了 特别是对于一些不熟悉Linux环境以及gdb调试的同学来说 这个就相对来说容易上手多了 下面就来介绍下环境的搭建 环境 w
  • mac电脑前端环境配置【包含m1芯片】

    目录 一 nvm的安装 1 卸载已安装到全局的 node npm 2 nvm安装 安装命令 常用命令 可能的问题 二 Git环境 1 安装git 2 git ssh 配置 3 重新配置 重新配置 也要在Terminal终端进行 4 测试配置
  • windwos11降级,重装Windows10

    windwos11降级 重装Windows10 序言 硬件信息 前提说明 制作U盘启动盘 修改电脑bios配置 重装系统 U盘启动 注意事项 驱动问题 序言 电脑到手查看安装的是Windows11家庭版系统 在视觉上整体感受更加圆滑柔顺 但
  • C++中动态数组实现

    实现动态数组 动态数组 示例代码 运行环境 运行效果 动态数组 动态数组Vector可以动态扩展内存 其采用连续的内存空间 当内存空间不足 便以原来的容量的2倍或者1 5倍成倍的扩展 将原有的数组元素拷贝到新分配的内存空间中 释放原有的内存
  • [Unity3D]呼风唤雨:天气插件UniSky的使用教程与案例

    UniSky是Unity3D的一款模拟环境天气的插件 使用它可以简单的实现呼风唤雨的各种功能 下载地址 请点击我 使用起来也非常的方便 引入Package后 注意路径必须是英文否则会出错 Project中会多一个文件夹 下面我们来简单的创建
  • 华为OD机试 【玩牌高手】(Java )

    题目 代码 import java util Scanner public class CardScoreCalculator public static void main String
  • 关于线性回归那些事儿

    1 如何理解线性回归中的方差齐性 在两组和多组比较中 每组都有很多数据 可以求出每组的方差 然后比较就行了 很容易理解 但是在线性回归中 有的人就不理解方差齐性是什么意思了 因为线性回归中自变量x不是分类变量 x取值很多 通常情况下 每个x
  • C++使用std::thread 多线程展开for循环,for循环并行计算

    比如说有一个for循环 需要迭代100次 来累加1 2 3 100计算其结果 创建10个线程 第一个线程累加1 2 10 第二个线程计算11 12 20等 那么如何优化呢 其实OpenMP库是可以直接调用的 只需要在for循环上面加一个指令
  • 搭建Node开发环境,Node.js的集成开发环境(IDE)搭建

    搭建Node开发环境 使用文本编辑器来开发Node程序 最大的缺点是效率太低 运行Node程序还需要在命令行单独敲命令 如果还需要调试程序 就更加麻烦了 所以我们需要一个IDE集成开发环境 让我们能在一个环境里编码 运行 调试 这样就可以大
  • Springboot结合线程池的使用

    1 使用配置文件配置线程的参数 配置文件 thread pool core size 100 max size 100 keep alive seconds 60 queue capacity 1 配置类 Component Configu
  • 【华为OD机试真题c++/java/python】农场施肥【2023 Q1A卷

    2023华为OD机试 刷题指南 点这里 华为OD机试 2023真题考点分类 点这里 题目描述 某农场主管理了一大片果园 fields i 表示不同果林的面积 单位 m 2 现在要为所有的果林施肥且必须在 n 天之内完成 否则影响收成 小布是
  • 数据库SQL千万级数据规模处理概要

    我在前年遇到过过亿条的数据 以至于一个处理过程要几个小时的 后面慢慢优化 查找一些经验文章 才学到了一些基本方法 综合叙之 与君探讨之 1 数据太多 放在一个表肯定不行 比如月周期表 一个月1000万 一年就1 2亿 如此累计下去肯定不行的
  • Android Studio Button 美化

    改变按钮Button控件的边角 填充颜色 边框颜色 步骤 在 res gt drawable 中新建一个 btn all shape xml
  • Unity——新输入系统Input System

    1 安装 安装 直接到包管理器Window gt Package Manager安装即可 安装后提示需要重启 重启后即可使用 注意 在Project Settings中的Player设置里将Active Input Handling设置为I
  • 计算鬼成像学习笔记一:简介

    这里写目录标题 1 何为鬼成像 1 1 传统光学成像 所见即所得 1 2 鬼成像 又称关联成像 1 2 1 桶探测器 1 2 2 CCD 1 2 3 空间分辨率 1 2 4 光源 1 2 5 纠缠光子 1 2 6 赝热光源 1 2 7 散斑
  • springboot maven 子模块没有java文件夹 或 pom.xml灰色

    1 pom xml灰色 2 子模块 modules 没有添加到父模块 报错
  • 大学【微机原理与接口技术】参考资料、该视频笔记

    该百度网盘链接 是我学习 微机原理与接口技术 的参考资料 感觉讲的不错 有需要评论区下发qq邮箱 我看到会发给你 该视频笔记参考我的博客 https blog csdn net weixin 42214698 category 115770
  • PPPoE原理与配置方法

    一 PPPoE原理 数字用户线路DSL Digital Subscriber Line 是以电话线为传输介质的传输技术 人们通常把所有的DSL技术统称为xDSL x代表不同种类的数字用户线路技术 目前比较流行的宽带接入方式为ADSL ADS