PPPoE技术白皮书(H3C)
PPPoE技术白皮书
关键词:PPP,Ethernet,PPPoE
摘要:PPPoE是一种通过一个远端接入设备为以太网上的主机提供接入服务,并可以对接入的每个主机实现控制和计费的技术。本文介绍了PPPoE的产生背景、技术优点、工作过程和典型组网应用。
缩略语:
缩略语 | 英文全名 | 中文解释 |
---|---|---|
ADSL | Asymmetric Digital Subscriber Line | 非对称数字用户线 |
DSLAM | Digital Subscriber Line Access Multiplexer | 数字用户线接入复用器 |
PPP | Point to Point Protocol | 点对点协议 |
PPPoE | PPP Over Ethernet | 在以太网上承载PPP协议 |
PADI | PPPoE Active Discovery Initiation | PPPoE活动发现发起报文 |
PADO | PPPoE Active Discovery Offer | PPPoE活动发现提供报文 |
PADR | PPPoE Active Discovery Request | PPPoE活动发现请求报文 |
PADS | PPPoE Active Discovery Session- confirmation | PPPoE活动发现会话报文 |
PADT | PPPoE Active Discovery Terminate | PPPoE活动发现终结报文 |
1 概述
1.1 产品背景
人们想通过相同的接入设备来连接到远程站点上的多个主机,同时接入设备能够提供与拨号上网类似的访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP的方法,即PPPoE。
PPPoE协议的提出解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并广为采用。
1.2 技术优点
对于用户来说,PPPoE的优点如下:
沿袭传统的拨号上网方式,依旧使用他们熟悉的硬件以及类似的软件进行Internet 的接入。
兼容现有的所有 xDSL Modem,不需要对客户端的 xDSL Modem 进行复杂的配置。
使用以太网网卡连接 PC 和 xDSL Modem,允许多台 PC 同时共享 xDSL 线路,可以节约用户投资。
对于运营商来说,PPPoE的优点如下:运营商可以通过数字用户线、电缆调制解调器或无线连接等方式提供支持多用户的宽带接入服务。
运营商可以利用可靠和熟悉的技术来加速部署高速互联网业务,对现有网络部署影响小。
运营商可以通过访问控制功能对用户的身份进行确认,通过计费功能对用户进行计费,同时对用户的网络行为进行监控,保证了网络安全。
终端用户可同时接入多个运营商,这种动态服务选择的功能可以使运营商容易创建和提供新的业务。
2 PPPoE技术实现方案
2.1 PPPoE组网结构
PPPoE使用Client/Server模型,PPPoE的客户端为PPPoE Client,PPPoE的服务器端为PPPoE Server。PPPoE Client向PPPoE Server发起连接请求,两者之间会话协商通过后,PPPoE Server向PPPoE Client提供接入控制、认证等功能。
根据PPP会话的起止点所在位置的不同,有两种组网结构:
- 第一种方式在设备之间建立 PPP 会话,所有主机通过同一个 PPP 会话传送数据,主机上不用安装 PPPoE 客户端拨号软件,一般是一个企业(公司)共用一个账号(图中 PPPoE Client 位于企业/公司内部,PPPoE Server 是运营商的设备)。
- 第二种部署方式,PPP 会话建立在 Host 和运营商的路由器之间,为每一个Host 建立一个 PPP 会话,每个 Host 都是 PPPoE Client,每个 Host 一个帐号,方便运营商对用户进行计费和控制。Host 上必须安装 PPPoE 客户端拨号软件。
2.2PPPoE报文格式
PPPoE报文的格式就是在以太网帧中携带PPP报文,如图3所示。
各个字段解释如下:
- Destination_address 域:一个以太网单播目的地址或者以太网广播地址(0xffffffff)。对于 Discovery 数据包来说,该域的值是单播或者广播地址,PPPoE Client 寻找 PPPoE Server 的过程使用广播地址,确认 PPPoE Server 后使用单播地址。对于 Session 阶段来说,该域必须是 Discovery 阶段已确定的通信对方的单播地址。
- Source_address 域:源设备的以太网 MAC 地址。
- Ether_type:设置为 0x8863(Discovery 阶段或拆链阶段)或者 0x8864(Session 阶段)。
- Ver 域:4bits,PPPoE 版本号,值为 0x1。
- Type 域:4bits,PPPoE 类型,值为 0x1。
- Code 域:8bits,PPPoE 报文类型。Code 域为 0x00,表示会话数据。Code 域0x09,表示 PADI 报文;Code 域为 0x07,表示 PADO 或 PADT 报文; Code 域为 0x19,表示 PADR 报文;Code 域为 0x65,表示 PADS 报文。报文的具体情况请参见附录部分。
- Session_ID 域:16bits,对于一个给定的 PPP 会话,该值是一个固定值,并且与以太网 Source_address 和 Destination_address 一起实际地定义了一个PPP 会话。值 0xffff 为将来的使用保留,不允许使用。
- Length 域:16bits,定义 PPPoE 的 Payload 域长度。不包括以太网头部和PPPoE 头部的长度。
2.3 PPPoE工作过程
PPPoE的协商过程如图4所示:
PPPoE可分为三个阶段,即Discovery阶段、Session阶段和Terminate阶段。
2.3.1 Discovery阶段
Discovery阶段由四个过程组成。完成之后通信双方都会知道PPPoE的Session_ID
以及对方以太网地址,它们共同确定了唯一的PPPoE Session。
(1) PPPoE Client 广播发送一个 PADI 报文,在此报文中包含 PPPoE Client 想要得到的服务类型信息。
(2) 所有的 PPPoE Server收到 PADI 报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个 PADO 报文。
(3) 根据网络的拓扑结构,PPPoE Client 可能收到多个 PPPoE Server 发送的PADO 报文,PPPoE Client 选择最先收到的 PADO 报文对应的 PPPoE Server 做为自己的 PPPoE Server,并单播发送一个 PADR 报文。
(4) PPPoE Server 产生一个唯一的会话 ID(SESSION ID),标识和 PPPoE Client 的这个会话,通过发送一个 PADS 报文把会话 ID 发送给 PPPoE Client,如果没有错误,会话建立后便进入 PPPoE Session 阶段。
2.3.2 Session阶段
PPPoE Discovery阶段的工作为PPPoE Client和PPPoE之间建立了Session,之后PPPoE便进入了Session阶段,Session阶段可划分为两部分,一是PPP协商阶段,二是PPP报文传输阶段。
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
(1) LCP 阶段主要完成建立、配置和检测数据链路连接。
(2) LCP 协商成功后,开始进行认证工作,认证协议类型由 LCP 协商结果(CHAP 或者 PAP)决定。
(3) 认证成功后,PPP 进入 NCP 阶段,NCP 是一个协议族,用于配置不同的网络层协议,常用的是 IP 控制协议(IPCP),它负责配置用户的 IP 和 DNS 等工作。
PPPoE Session的PPP协商成功后,其上就可以承载PPP数据报文。在PPPoE Session阶段所有的以太网数据包都是单播发送的。
2.3.3 Terminate阶段
PPP通信双方应该使用PPP协议自身(比如PPP终结报文)来结束PPPoE会话,但在无法使用PPP协议结束会话时可以使用PADT报文。
进入PPPoE Session阶段后, PPPoE Client 和PPPoE Server 都可以通过发送PADT报文的方式来结束PPPoE连接。PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了, 即使是常规的PPP结束数据包也不允许发送。
3 典型组网应用
3.1 利用ADSL Modem将局域网接入Internet
3.1.1 组网需求
企业希望使用一个公共帐号访问Internet:
- Router A 作为 PPPoE Client,通过一个帐号访问 Internet(相当于整个企业的员工公用这个帐号)。
- Router B 作为 PPPoE Server 连接至 DSLAM,提供 RADIUS 认证、计费等功能,同时连接到 Internet。
3.1.2 组网图
3.2 无线PPPoE接入
3.2.1 组网需求
AP设备作为PPPoE Client,BRAS设备作为PPPoE Server,终端用户可以直接通过无线网络访问Internet。
3.2.2 组网图
4 参考文献
RFC1661:The Point-to-Point Protocol (PPP)
RFC2516:A Method for Transmitting PPP Over Ethernet (PPPoE)
5 附录
5.1 报文结构
5.1.1 PADI(PPPoE Active Discovery Initiation)
Code 域为 0x09。
Session_ID 域为 0x0000。
TAG_TYPE 域为 0x0101(Service-Name),表明后面紧跟的是服务的名称。有且只有一个 TAG_TYPE 为 Service-Name 的 TAG,其他类型的 TAG 可选。
5.1.2 PADO(PPPoE Active Discovery Offer)
Code 域为 0x07。
SESSION_ID 域为 0x0000。
TAG_TYPE 域为 0x0101(Service-Name),表明后面紧跟的是服务的名称;为 0x0102(AC-Name)表明后面紧跟的字符串唯一地表示了某个特定的访问集中器。有且只有一个 TAG_TYPE 为 AC-Name 的 TAG,至少一个TAG_TYPE 为 Service-Name 的 TAG。
5.1.3 PADR(PPPoE Active Discovery Request)
Code 域为 0x19。
SESSION_ID 为 0x0000。
TAG_TYPE 域为 0x0101(Service-Name),表明后面紧跟的是服务的名称。有且只有一个 TAG_TYPE 为 Service-Name 的 TAG,其他类型的 TAG 可选。
5.1.4 PADS(PPPoE Active Discovery Session-confirmation)
Code 域为 0x65。
SESSION_ID 为 Discovery 阶段分配的数值。
TAG 为可选。
5. PADT(PPPoE Active Discovery Terminate)
Code 域为 0xa7。
SESSION_ID 域为 Discovery 阶段分配的数值。
无 TAG。
PPPoE技术白皮书(H3C)的更多相关文章
- URPF技术白皮书
URPF技术白皮书 摘 要:本文介绍了URPF的应用背景,URPF主要用于防止基于源地址欺骗的网络攻击行为,例如基于源地址欺骗的DoS攻击和DDoS攻击:随后介绍了URPF的技术原理以及URPF ...
- [华三] IPv6技术白皮书(V1.00)
IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...
- SSL技术白皮书
首页产品技术操作系统ComwareV5安全和VPN SSL技术白皮书 下载 收藏 打印 推荐 摘自:http://www.h3c.com/cn/d_200812/622834_30003_0.htm# ...
- Isolate-user-vlan技术白皮书
http://www.h3c.com.cn/Products___Technology/Technology/LAN/Other_technology/Technology_book/200804/6 ...
- DMR技术白皮书
DMR技术白皮书 主页(http://pttcn.net):DMR技术白皮书 关于DMR 1.模拟技术的局限性 虽然模拟技术仍具有不少优势,如低廉的成本.可自定的功能以及简便的搭建方式等.但模拟技术已 ...
- JAP 1.0.1 以及 《JAP产品技术白皮书》正式发布
快讯 JAP 1.0.1 正式发布 <JAP产品技术白皮书>正式发布.立即获取:白皮书 JAP 1.0.1 版本内容 新增功能/支持 添加 com.fujieid.jap.core.uti ...
- H3C数据中心虚拟化解决方案技术白皮书
缩略语清单: 缩略语 英文全名 中文解释 IDC Internet Data Center 互联网数据中心 VRF Virtual Router Forwarding 虚拟路由器转发 SMP Symm ...
- 【翻译】WhatsApp 加密概述(技术白皮书)
目录 简介 术语 客户端注册 会话初始化设置 接收会话设置 交换信息 传输媒体和附件 群组消息 通话设置 ...
- OpenFlow技术白皮书-V1.0
1. 概述 OpenFlow是由斯坦福大学的Nick McKeown教授在2008年4月ACM Communications Review上发表的一篇论文OpenFlow: enabling inn ...
随机推荐
- pwnable.kr之brainf*ck
pwnable.kr之brainf*ck 今天又是被难倒的一天Orz,个人感觉pwnable.kr上的题都比较剑走偏锋,仔细做过去,一定会有很大的收获. 不多说了,今天看的是第二关的第一道题:brai ...
- [CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)
记一道布尔注入的题,存在过滤字符. 从题目看应该是一道注入题.提示存在flag表flag列. 输入1和2的返回结果不一样,可能是布尔注入. 简单用万能密码尝试了一下.提示SQL Injection C ...
- 使用Eclipse下载CRaSH源代码
Eclipse for Java Developers (Juno)本身有一个eGit组件,通过它可以直接从Git源码库中下载源代码,以下载 CRaSH 为例说明: 从主页上的"Develo ...
- 超硬核 Web 前端学霸笔记,学完就去找工作!
文章和教程 Vue 学习笔记 Node 学习笔记 React 学习笔记 Angular 学习笔记 RequireJS 学习笔记 Webpack 学习笔记 Gulp 学习笔记 Python 学习笔记 E ...
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
一.问题由来 下午的时候,电脑用得好好的,突然一下死机,么办法只能够重新启动.再次打开IDEA的时候,之前打开的所有的项目 信息都不在了,我重新打开项目,然后就出现问题,所有的类都报红了,这让我很是意 ...
- dubbo-admin管理控制台安装
拉项目切换分支到master git clone https://github.com/apache/dubbo-admin.git /var/tmp/dubbo-admin 打开项目修改配置 dub ...
- 数据结构与算法——链表 Linked List(单链表、双向链表、单向环形链表-Josephu 问题)
链表是有序的列表,但是在内存中存储图下图所示 链表是以 节点 的方式来存储,是 链式存储 每个节点包含 data 域.next 域,指向下一个节点 链表的各个节点 不一定是连续存储,如上图所示 链表还 ...
- [ASP.NET MVC]@Scripts.Render、@Styles.Render的使用
一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件 2.BundleConfig就是一个微软新加的 一个打 ...
- SpringBoot快速入门(必知必会)
是什么?能做什么 SpringBoot必知必会 是什么?能做什么 SpringBoot是一个快速开发脚手架 快速创建独立的.生产级的基于Spring的应用程序 SpringBoot必知必会 快速创建应 ...
- 嵌入式Linux的启动过程
1.了解 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展.虽然 Linux 在桌面 PC 机上的 ...