第28章-PPPoE

[1. 以太网接入的典型应用](#1. 以太网接入的典型应用)

[1.1. IP技术的应用与发展](#1.1. IP技术的应用与发展)

[1.2. 以太网接入的典型应用场景之一------大型园区接入的典型应用](#1.2. 以太网接入的典型应用场景之一——大型园区接入的典型应用)

[2. PPPoE技术的基本原理](#2. PPPoE技术的基本原理)

[2.1. 技术背景](#2.1. 技术背景)

[2.2. PPPoE工作原理](#2.2. PPPoE工作原理)

[2.3. PPPoE的两个阶段:Discovery阶段和PPPSession阶段](#2.3. PPPoE的两个阶段:Discovery阶段和PPPSession阶段)

[2.4. PPPoE的帧结构](#2.4. PPPoE的帧结构)

[2.5. PPPoE的协商过程](#2.5. PPPoE的协商过程)


1. 以太网接入的典型应用

1.1. IP技术的应用与发展

语音+数据+移动 → 统一通讯

例子:

以太网接入技术:适用于园区内用户密集接入,传输介质以光纤和双绞线为主;

HG:家庭网关(HG,Home Gateway),位于用户侧的设备;

AN:接入点(AN,Access Node),位于运营商接入网边缘的设备;

AGG:汇聚设备(AGG,Aggregation),位于AN和运营商城域网乃至骨干网之间设备;

1.2. 以太网接入的典型应用场景之一------大型园区接入的典型应用

设计方案:大型住宅园区

园区内设置一台园区交换机作为AN(接入点);

园区交换机下行以百兆或千兆光纤连接所有楼道交换机,楼道交换机再连接到各用户的HG;

园区交换机上行则采用千兆光纤连接到AGG,实现园区网络的高速接入;

例如:

AN设备可进行选择为三层交换机二层交换机

采用三层转发延伸到AN的接入方式时:

① AN(Access Node)上行通过路由协议实现路由转发,AN(Access Node)下行通过VLAN实现不同用户二层隔离,这样广播域被限制在AN(Access Node)下行的同一业务VLAN内,提高了接入网的带宽利用率。

② AN(Access Node)对用户进行高密度接入并终结二层转发,从而同一AGG可以接入更多用户终端。

③ AN(Access Node)和AGG(Aggregation)上无须支持和部署复杂的二层隔离和安全特性网络改造规模小,有利于采用已有设备采用较低成本的设备进行快速部署。

采用二层交换在 AGG (Aggregation)终结:

① 广播域的范围扩大到一台AGG设备下的同一业务VLAN。

② 在二层交换终结在AGG设备的方案中,一台AGG设备最多可接入用户终端数将受限于其自身MAC地址表项数。

2. PPPoE技术的基本原理

2.1. 技术背景

针对用户进行认证、授权和计费也是运营商需要考虑的问题之一。

解决方案1:在以太网交换机上支持的一些认证手段如802.1X主要基于以太网交换机的上的物理端口。

问题:部署上需要尽量靠近边缘,甚至需要在运营商管理范围之外的些接入设备上进行部署,因此在部署和管理上都不太方便,具有一定的局限性。

解决方案2:PPPoE(Point-to-Point Protocol over Ethernet)是一种广泛应用于宽带接入领域的网络协议,常见于家庭和企业的宽带拨号接入方式。例如,公共无线热点。

2.2. PPPoE工作原理

模式:PPPoE协议采用Client/Server方式,它将包含用户认证信息的PPP报文封装在以太网之内,在以太网上提供点对点的连接的同时,也利用PPP协议的PAP和CHAP认证方式对用户进行认证。

PPPOE Client

① 可以是用户侧的HG(Home Gateway)设备,也可以是连接到网络的PC。

② 将以太网帧(携带PPP帧)通过以太网传送到PPPOE Server上以进行PPP认证。

PPPOE Server:通常是位于骨千网的边缘层宽带接入服务器(Broadband Remote AccessServer,简称BRAS)。

宽带接入服务器(BRAS)主要完成两方面功能:

① 网络承载功能:负责终结用户的PPPOE连接、汇聚用户的流量功能;

② 控制实现功能:与认证系统、计费系统和客户管理系统及服务策略控制系统相配合实现用户接入的认证、计费和管理功能。

这两项功能都可以利用路由器设备进行实现,为方便理解,在后续的组网图和介绍中我们都以路由器来代替宽带接入服务器和模拟PPPoE Server。

2.3. PPPoE的两个阶段:Discovery阶段和PPPSession阶段

Discovery阶段:当一个主机想开始PPPoE进程的时候,它必须先识别接入端的以太网MAC地址,建立PPPoE的SESSION ID。这也是Discovery阶段的目的。

PPP Session阶段:当PPPoE进入Session阶段后,PPP 报文就可以作为PPPoE帧的净荷封装在以太网帧发到对端,SESSION ID必须是Discovery阶段确定的ID。MAC地址必须是对端的MAC地址,PPP报文从Protocol ID 开始。在Session阶段主机或服务器任何一方都可发PADT(PPPOEActive Discovery Terminate)报文通知对方结束本Session。

2.4. PPPoE的帧结构

在上图所示的以太网帧的结构中:

DESTINATION_ADDR:部分为目的MAC地址,可以是广播MAC地址(Oxffff)或者单播MAC地址。对于PPP Session数据来说,必须使用在Discovery阶段中确认的单播MAC地址。

SOURCE_ADDR:则表示源MAC地址。

ETHER_TYPE:为0x8863时表示该为Discovery阶段的报文,ETHER_TYPE为0x8864时则表示该帧为PPP Sssion阶段的报文。

在上图所示的PPPoE的以太网payload中各字段的解释如下:

VER:PPPoE的版本,根据RFC2516要求必须被设为0x1。

TYPE:根据现存的PPPoE版本必须被设为0x1。

CODE:用于标识Discovery阶段和PPP Session阶段的不同报文,其取值在后面进行详细介绍。

SESSION_ID:用于唯一标识一个PPP Session,在Discovery阶段被定义,在PPPSession阶段被使用。保留值为0xffff。

LENGTH:仅指PPPoE payload 的长度,不括以太网和PPPoE的头部。

payload :PPPoE的 Payload 包括0或多个TAG。TAG采用上图所示的**TLV(Type-Length-Value)**结构:其中 TAG_TYPE 表示 TAG的类型,常用的类型在后面会进行介绍。TAG_LENGTH则表示TAG_VALUE的长度。

2.5. PPPoE的协商过程

在如上图所示的组网中,PPPoE Client先将用户数据封装为PPP,再将PPP封装到以太网帧中,PPP中相关的验证信息将会送给PPPoE Server进行PAP或CHA验证。通过验证之后,PPPoE Client会以IPCP协商的形式从PPPoE Server获得IP地址。

PPPoE Client和PPPoE Server之间的PPPoE协商过程分为Discovery阶段和PPP Session阶段。

Discovery阶段

第1步:PPPoE Client在以太网口上广播PADI(PPPoE Active Discovery lnitiation)报文该报文以以太网帧的形式被ADSL Modem桥接到运营商的集中路由器(PPPoE Server)上。

(PPPoE头部:CODE=0x09;SESSION_ID=0x0000。PPPoEPavload: TAG_TYPE必须包括Service-Name,用于指示请求的服务:也可以包含其他的TAG)

第2步:PPPoE Server在收到PADI之后,发送回PADO(PPPoE Active Discovery Offer)报文,其中包含了PPPoE Server的AC-name(Access Concentrator's name)信息和可以提供的服务信息Service-Name,以供 PPPoE Client 进行选择。

(PPPoE 头部:CODE=0x07;SESSION_ID=0x0000。PPPoE Payload:必须包含至少一个Service-Name的TAG,用于指示可以提供的服务类型;必须包含AC-name的TAG)

第3步:PPPoE Client发送一个单播的PADR(PPPoE Active Discovery Request)报文给选定的PPPOE Server。报文中包含服务信息Service-Name。

(PPPoE头部:CODE=0x19;SESSION_ID=0x0000。PPPoE Payload:TAG_TYPE必须包括Service-Name用于指示请求的服务;也可以包含其他的TAG)

第4步:PPPoE Server发回PADS(PPPoE Active Discovery Session-Confirmation)报文,其包含session ID信息。完成Discovery阶段。

(PPPoE 头部:CODE=0x19;SESSION_ID由PPPoE Server定义。PPPE Payload: TAG_TYPE 必须包括Service-Name,用于指示PPPOE Server同意提供的服务;也可以包含其他的TAG)

在Discovery阶段之后,PPPoE Client已经知道了PPPoE Server的MAC地址和session ID,并可以据此来建立相应的PPP连接。接下来进入PPP session阶段。

PPP Session阶段

在PPP session阶段,PPPoE Client和PPPoE Server之间进行普通的LCP、NCP、IPCP协商来进行PPP验证(PAP或CHAP)和IP地址的分配。

在PPP session阶段,以太网的ETHER_TYPE为0x8864,PPPoE头部的CODE=0x00,SESSION_ID在会话建立过程中不能发生改变,PPPOE Payload为PPP帧。

在PPP session建立之后,PPPOE Server和Client都可以通过发送PADT(PPPOE Active Discovery Terminate)报文来终止PPP session。PPPoE头部的CODE=0xa7,不括TAG。

相关推荐
ServBay8 小时前
告别面条代码,PSL 5.0 重构 PHP 性能与安全天花板
后端·php
JaguarJack3 天前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo3 天前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack4 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo4 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack4 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay5 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954485 天前
CTF 伪协议
php
BingoGo8 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack8 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端