You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
datacom/Datacom-MD/第八章:PPP协议&PPPOE协议.md

26 KiB

PPP协议&PPPOE协议

作者:行癫


第一节:早期广域网技术概述

一:广域网技术

1.什么是广域网

广域网是连接不同地区局域网的网络,通常所覆盖的范围从几十公里到几千公里,他能连接多个地区、城市和国家,或横跨几个洲提供远距离通信,形成国际性的远程网络

image-20220216094441380
2.广域网与局域网区别
image-20220216094541854

局域网是一种覆盖地理区域比较小的计算机网络

广域网是一种通过租用ISP网络或者自建专用网络来构建的覆盖地理区域比较广的计算机网络

广域网与局域网的区别主要体现在以下几个方面

局域网带宽高但是传输距离短,无法满足广域网长距离传输

局域网设备通常是交换机,广域网设备大多都是路由器

局域网属于某一单位或者组织广域网服务大多由ISP提供

广域网与局域网一般仅在物理层和数据链路层采用不同的协议或技术,其他层次基本没有差异

银行、政府、军队、大型公司的专用网路也属于局域网且与Internet实现物理隔离

Internet只是广域网的一种小企业借用Internet作为广域网连接

3.早期广域网技术介绍

早期广域网与局域网的区别在于数据链路层和物理层的差异性在TCP/IP参考模型中其他各层无差异

image-20220216100225306
4.广域网络设备角色介绍

广域网络设备基本角色有三种CECustomer Edge 用户边缘设备、PEProvider Edge 服务提供商边缘设备和PProvider 服务提供商设备)

CE用户端连接服务提供商的边缘设备CE连接一个或多个PE实现用户接入

PE服务提供商连接CE的边缘设备PE同时连接CE和P设备是重要的网络节点

P服务提供商不连接任何CE设备

image-20220216100621668
5.早期广域网技术的应用

早期的广域网技术主要是针对不同的物理链路类型在数据链路层进行不同的二层封装在CE与PE之间常用的广域网封装协议有PPP/HDLC/FR等用于解决用户接入广域网的常居鲁传输问题在ISP内部常用的广域网协议主要是ATM它用于解决骨干网高速转发的问题

image-20220216100951320

第二节PPP协议原理与配置

PPP协议原理

1.PPP协议概述

PPP点到点协议是一种常见的广域网数据链路层协议主要用于在全双工的链路上进行点到点的数据传输封装

PPP提供了安全认证协议族PAP密码验证协议和CHAP挑战握手认证协议

PPP协议具有良好的扩展性例如当需要在以太网链路上承载PPP协议时PPP可以扩展为PPPoE

PPP协议提供了LCP链路控制协议用于各种链路层参数的协商例如最大接收单元、认证模式等

PPP协议提供各种NCP网络控制协议。如IPCPIP控制协议用于各种网络层参数的协商更好地支持网络层协议

image-20220216101849678
2.PPP链路建立流程

PPP链路的建立有三个阶段的协商过程链路层协商、认证协商可选和网络层协商

链路层协商通过LCP报文进行链路层协商建立链路层连接

认证协商(可选):通过链路建立阶段协商的认证方式进行链路认证

网络层协商通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商

image-20220216102337987
3.PPP链路接口状态机

PPP协商由链路两端的接口完成接口的状态表示了协议的协商阶段

image-20220216102559769

通信双方开始建立PPP链路时先进入到Establish阶段

在Establish阶段进行LCP协商协商通信双方的MRUMaximum Receive Unit最大接收单元、认证方式和魔术字Magic Number等选项。协商成功后进入Opened状态表示底层链路已建立

如果配置了认证将进入Authenticate阶段。否则直接进入Network阶段

在Authenticate阶段会根据连接建立阶段协商的认证方式进行链路认证。认证方式有两种PAP和CHAP。如果认证成功进入Network阶段否则进入Terminate阶段拆除链路LCP状态转为Down

在Network阶段PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。最常见的NCP协议是IPCP用来协商IP参数

在Terminate阶段如果所有的资源都被释放通信双方将回到Dead阶段

4.LCP报文格式

PPP报文可由Protocol字段标识不同类型的PPP报文例如当Protocol字段为0xC021时代表是LCP报文此时又由Code字段标识不同类型LCP报文

image-20220216102928486

**PPP帧格式 **

Flag字段标识一个物理帧的起始和结束该字节为二进制序列011111100X7E

PPP帧的Address字段字节固定为11111111 0XFF是一个广播地址

PPP数据帧的Control字段默认为000000110X03表明为无序号帧

帧校验序列FCS字段是个16 bit的校验和用于检查PPP帧的完整性

Protocol字段用来说明PPP所封装的协议报文类型0XC021代表LCP报文0XC023代 表PAP报文0XC223代表CHAP报

Information字段包含Protocol字段中指定协议的内容该字段的最大长度被称为最大接收单元MRU缺省值为1500

LCP报文携带的一些常见的配置参数有MRU、认证协议和魔术字

在VRPVersatile Routing Platform通用路由平台平台上MRU参数使用接口上配置的MTUMaximum Transmission Unit最大传输单元值来表示

常用的PPP认证协议有PAP和CHAP一条PPP链路的两端可以使用不同的认证协议认证对端但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等认证信息

LCP使用魔术字来检测链路环路和其他异常情况。魔术字是随机产生的一个数字随机机制需要保证两端产生相同魔术字的可能性几乎为0

5.LCP协商过程-正常协商

LCP协商由不同的LCP报文交互完成协商由任意一方发送Configure-Request报文发起如果对端接收此报文且参数匹配则通过回复Configure-Ack响应协商成功

image-20220216103839475

R1和R2使用串行链路相连运行PPP协议。当物理层链路变为可用状态之后R1和R2使用LCP协商链路参数

本例中R1首先发送一个Configure-Request报文此报文中包含R1上配置的链路层参数。当R2收到此Configure-Request报文之后如果R2能识别并接受此报文中的所有参数则向R1回应一个Configure-Ack报文。同样的R2也需要向R1发送Configure-Request报文使R1检测R2上的参数是不是可接受的

R1在没有收到Configure-Ack报文的情况下会每隔3秒重传一次Configure-Request报文如果连续10次发送Configure-Request报文仍然没有收到Configure-Ack报文则认为对端不可用停止发送Configure-Request报文

6.LCP协商过程-参数不匹配

在LCP报文交互中出现LCP参数不匹配时接收方回复Configure-Nak响应告知对端修改参数然后重新协商

image-20220216104304430

当R2收到R1发送的Configure-Request报文之后如果R2能识别此报文中携带的所有链路层参数但是认为部分或全部参数的取值不能接受即参数的取值协商不成功则R2需要向R1回应一个Configure-Nak报文

在这个Configure-Nak报文中只包含不能接受的链路层参数并且此报文所包含的链路层参数将被修改为R2上可以接受的取值或取值范围

在收到Configure-Nak报文之后R1需要根据此报文中的链路层参数重新选择本地配置的其他参数并重新发送一个Configure-Request

7.LCP协商过程-参数不识别

在LCP报文交互中出现LCP参数不识别接收方回复Configure-Reject响应告知对端删除不识别的参数然后重新协商

image-20220216104758334

当R2收到R1发送的Configure-Request报文之后如果R2不能识别此报文中携带的部分或全部链路层参数则R2需要向R1回应一个Configure-Reject报文。在此Configure-Reject报文中只包含不能被识别的链路层参数

在收到Configure-Reject报文之后R1需要向R2重新发送一个Configure-Request报文在新的Configure-Request报文中不再包含不被对端R2识别的参数

8.PPP认证模式PAP

链路协商成功后进行认证协商认证协商有两种模式PAP和CHAP

PAP认证双方有两次握手协商报文以明文的形式在链路上传输

image-20220216105600739

LCP协商完成后认证方要求被认证方使用PAP进行认证

PAP认证协议为两次握手认证协议密码以明文方式在链路上发送过程如下

被认证方将配置的用户名和密码信息使用Authenticate-Request报文以明文方式发送给认证方

认证方收到被认证方发送的用户名和密码信息之后根据本地配置的用户名和密码数据库检查用户名和密码信息是否匹配如果匹配则返回Authenticate-Ack报文表示认证成功。否则返回Authenticate-Nak报文表示认证失败

9.PPP认证模式-CHAP

CHAP认证双方有三次握手协商报文被加密后再在链路上传输

image-20220216110540905

LCP协商完成后认证方要求被认证方使用CHAP进行认证

CHAP认证过程需要三次报文的交互。过程如下

认证方主动发起认证请求认证方向被认证方发送Challenge报文报文内包含随机数Random和ID

被认证方收到此Challenge报文之后进行一次加密运算运算公式为MD5{ ID随机数密码}意思是将Identifier、随机数和密码三部分连成一个字符串然后对此字符串做MD5运算得到一个16 Byte长的摘要信息然后将此摘要信息和端口上配置的CHAP用户名一起封装在Response报文中发回认证方

认证方接收到被认证方发送的Response报文之后按照其中的用户名在本地查找相应的密码信息得到密码信息之后进行一次加密运算运算方式和被认证方的加密运算方式相同然后将加密运算得到的摘要信息和Response报文中封装的摘要信息做比较相同则认证成功不相同则认证失败

使用CHAP认证方式时被认证方的密码是被加密后才进行传输的这样就极大的提高了安全性

10.NCP协商-静态IP地址协商

PPP认证协商后双方进入NCP协商阶段协商在数据链路上所传输的数据包的格式与类型以常见的IPCP协议为例他为分静态IP地址协商和动态IP地址协商

image-20220216110927492

NCP主要用来建立和配置不同的网络层协议协商在该数据链路上所传输的数据包的格式与类型。常见的有IPCP等

静态IP地址协商过程如下

每一端都要发送Configure-Request报文在此报文中包含本地配置的IP地址

每一端接收到此Configure-Request报文之后检查其中的IP地址如果IP地址是一个合法的单播IP地址而且和本地配置的IP地址不同没有IP冲突则认为对端可以使用该地址回应一个Configure-Ack报文

11.NCP协商-动态IP地址协商

动态IP地址协商支持PPP链路一端为对端配置IP地址

image-20220216111415722

R1向R2发送一个Configure-Request报文此报文中会包含一个IP地址0.0.0.0表示向对端请求IP地址

R2收到上述Configure-Request报文后认为其中包含的地址0.0.0.0不合法使用Configure-Nak回应一个新的IP地址10.1.1.1

R1收到此Configure-Nak报文之后更新本地IP地址并重新发送一个Configure Request报文包含新的IP地址10.1.1.1

R2收到Configure-Request报文后认为其中包含的IP地址为合法地址回应一个Configure-Ack报文

同时R2也要向R1发送Configure-Request报文请求使用地址10.1.1.2R1认为此地址合法回应Configure-Ack报文

PPP协议配置

1.PPP基本配置命令

image-20220216111714694

2.PAP认证配置命令

image-20220216111810357

3.CHAP认证配置命令

image-20220216111919853

4.配置举例-PAP认证
image-20220216112135703

实验要求:

在R1与R2之间的PPP链路上启用PAP认证功能

在R1配置为认证方

将R2配置为被认证方

image-20220216112329613
5.配置举例-CHAP认证
image-20220216112439701

实验要求:

在R1与R2之间的PPP链路上启用CHAP认证功能

将R1配置为认证方

将R2配置为被认证方

image-20220216112608226

第三节PPPoE原理与配置

PPPoE概述

1.什么时PPPoE

PPPoE以太网承载PPP协议是一种把PPP帧封装到以太网帧中的链路层协议PPPoE可以使以太网网络中的多台主机连接到远端的宽带接入到服务器

PPPoE集中了PPP和Ethernet两个技术的优点即有以太网的组网灵活优势又可以利用PPP协议实现认证、计费等功能

image-20220216113003768
2.PPPoE应用场景

PPPoE实现了在以太网上提供点到点的连接PPPoE客户端与PPPoE服务器端之间建立会话封装PPP数据报文为以太网上的主机提供接入服务实现用户控制和计费在企业网络与运行商网络中广泛应用

PPPoE的常见应用场景有家庭用户拨号上网、企业用户拨号上网等

image-20220216113228048
3.PPPoE会话建立

PPPoE的会话建立有三个阶段PPPoE发现阶段、PPPoE会话阶段和PPPoE终结阶段

image-20220216114905886
4.PPPoE报文

PPPoE会话的建立通过不同的PPPoE报文交互实现

image-20220216115057158

DMAC表示目的设备的MAC地址通常为以太网单播目的地址或者以太网广播地址

SMAC表示源设备的以太网MAC地址

Eth-Type表示协议类型字段当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文

VER表示PPPoE版本号值为0x01

Type表示类型值为0x01

Code表示PPPoE报文类型不同取值标识不同的PPPoE报文类型

PPPoE会话ID与以太网SMAC和DMAC一起定义了一个PPPoE会话

Length表示PPPoE报文的长度

5.PPPoE发现阶段

PPPoE协议发现有四个步骤客户端发送请求、服务端响应请求、客户端确认响应和建立会话

image-20220216115656976

PPPoE客户端在本地以太网中广播一个PADI报文此PADI报文中包含了客户端需要的服务信息

PADI报文的目的MAC地址是一个广播地址Code字段为0x09Session ID字段为0x0000

所有PPPoE服务器端收到PADI报文之后会将报文中所请求的服务与自己能够提供的服务进行比较

如果服务器端可以提供客户端请求的服务就会回复一个PADO报文

PADO报文的目的地址是发送PADI报文的客户端MAC地址Code字段为0x07Session ID字段为0x0000

客户端可能会收到多个PADO报文此时将选择最先收到的PADO报文对应的PPPoE服务器端并发送一个PADR报文给这个服务器端

PADR报文的目的地址是选中的服务器端的MAC地址Code字段为0x19Session ID字段为0x0000

PPPoE服务器端收到PADR报文后会生成一个唯一的Session ID来标识和PPPoE客户端的会话并发送PADS报文

PADS报文的目的地址是PPPoE客户端的MAC地址Code字段为0x65Session ID字段是PPPoE服务器端为本PPPoE会话产生的Session ID

会话建立成功后PPPoE客户端和服务器端进入PPPoE会话阶段

6.PPPoE会话阶段

PPPoE会话阶段会进行PPP协商分为LCP协商、认证协商、NCP协商三个阶段

image-20220216120028193

PPPoE会话阶段可分为两部分

PPP协商阶段

PPP报文传输

PPPoE Session上的PPP协商和普通的PPP协商方式一致分为LCP、认证、NCP三个阶段

LCP阶段主要完成建立、配置和检测数据链路连接

LCP协商成功后开始进行认证认证协议类型由LCP协商结果决定

认证成功后PPP进入NCP阶段NCP是一个协议族用于配置不同的网络层协议常用的是IP控制协议IPCP它负责配置用户的IP地址和DNS服务器地址等

PPPoE Session的PPP协商成功后就可以承载PPP数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的Session ID并保持不变

8.PPPoE会话终结阶段

当PPPoE客户端希望关闭连接时会向PPPoE服务器端发送一个PADT报文用于关闭连接

同样如果PPPoE服务器端希望关闭连接时也会向PPPoE客户端发送一个PADT报文

image-20220216120430002

在PADT报文中目的MAC地址为单播地址Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后连接随即关闭

PPPoE基础配置
1.PPPoE基础配置

image-20220216120750332

2.配置实例-PPPoE客户端
image-20220216120822584

实验要求:

将R1设置为PPPoE客户端R2为PPPoE服务器端

在R1上配置PPPoE客户端拨号接口

在R1上配置PPPoE客户端拨号接口的认证功能

R1上的拨号接口获取PPPoE服务器端分配的IP地址

R1通过拨号接口可以访问服务器端

image-20220216121013241

PPPoE客户端配置包括三个步骤

第一步配置一个拨号接口

dialer-rule命令用于进入Dialer-rule视图在该视图下可以通过拨号规则来配置发起PPPoE会话的条件

interface dialer number命令用来创建并进入Dialer接口

dialer user user-name命令用于配置对端用户名这个用户名必须与对端服务器上的PPP用户名相同

dialer-group group-number命令用来将接口置于一个拨号访问组

dialer bundle number命令用来指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来

注:必须确保命令dialer-group中的参数group-number和命令dialer-rule中的dialer-rule-number保持一致

第二步是在接口上将Dialer Bundle和接口绑定

pppoe-client dial-bundle-number number命令来实现Dialer Bundle和物理接口的绑定用来指定PPPoE会话对应的Dialer Bundle其中number是与PPPoE会话相对应的Dialer Bundle编号

第三步配置一条缺省静态路由该路由允许在路由表中没有相应匹配表项的流量都能通过拨号接口发起PPPoE会话

3.配置实例-PPPoE服务器端
image-20220216121333431

实验要求:

在PPPoE服务器端上创建为客户端分配IP地址的地址池

PPPoE服务器端完成PPPoE客户端认证并分配合法的IP地址

image-20220216121440189

PPPoE服务器端配置

interface virtual-template命令用来创建虚拟模板接口,或者进入一个已经创建的虚拟模板接口视图

pppoe-server bind命令用来配置PPPoE接入用户上线绑定的虚拟模板接口

4.验证配置

查看拨号接口详细信息

image-20220216121550850

查看PPPoE-Client会话初始状态

image-20220216121617502

查看PPPoE-client会话建立状态信息

image-20220216121703292

注意:

display interface dialer[ number ]命令用于查看拨号接口的配置,便于定位拨号接口的故障

LCP opened, IPCP opened表示链路的状态完全正常

display pppoe-client session summary命令用于查看PPPoE客户端的PPPoE会话状态和统计信息

ID表示PPPoE会话IDBundle ID和Dialer ID的值与拨号参数配置有关

Intf表示客户端侧协商时的物理接口

State表示PPPoE会话的状态包括以下四种

IDLE表示当前会话状态为空闲

PADI表示PPPoE会话处于发现阶段并已经发送PADI报文

PADR表示PPPoE会话处于发现阶段并已经发送PADR报文

UP表示PPPoE会话建立成功