Bootstrap

【网络协议详解】——PPP/PPPOE技术(学习笔记)

目录

PPP简介

定义

目的

PPPoE

定义

目的

PPP报文格式

PPP的基本构架

PP报文封装的帧格式

PPP的建链过程

Establish阶段(链路建立阶段)

CHAP与PAP验证过程对比

Network阶段(网络层协商阶段)

Terminate阶段(网络终止阶段)

PPPoE典型组网

设备作为PPPoE Client

设备作为PPPoE Server

PPPoE拨号的工作原理

Discovery阶段

Session阶段

Terminate阶段

配置设备作为PPPoE Server/Client示例

组网需求

配置思路

验证配置结果


PPP简介

定义

PPP(Point-to-Point Protocol)协议是一种点到点链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。

目的

PPP协议是在串行线IP协议SLIP(Serial Line Internet Protocol)的基础上发展起来的。由于SLIP协议具有只支持异步传输方式、无协商过程(尤其不能协商如双方IP地址等网络层属性)、只能承载IP一种网络层报文等缺陷,在发展过程中,逐步被PPP协议所替代。

PPP协议有如下优点:

  • 对物理层而言,PPP既支持同步链路又支持异步链路,而X.25、FR(Frame Relay)等数据链路层协议仅支持同步链路SLIP仅支持异步链路
  • PPP协议具有良好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE
  • 提供LCP(Link Control Protocol)协议,用于各种链路层参数的协商
  • 提供各种NCP(Network Control Protocol)协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持了网络层协议。
  • 提供认证协议CHAP(Challenge-Handshake Authentication Protocol)、PAP(Password Authentication Protocol),更好的保证了网络的安全性。
  • 无重传机制,网络开销小,速度快。

PPPOE简介

定义

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

目的

运营商希望把一个站点上的多台主机连接到同一台远程接入设备,同时接入设备能够提供与拨号上网类似的访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE

PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。

PPP报文格式

PPP的基本构架

PPP协议处于TCP/IP协议栈的数据链路层,主要用在支持全双工的同异步链路上,进行点到点之间的数据传输。

PPP主要由三类协议族组成:

  • 链路控制协议族(Link Control Protocol),主要用来建立、拆除和监控PPP数据链路。

  • 网络层控制协议族(Network Control Protocol),主要用来协商在该数据链路上所传输的数据包的格式与类型。

  • 扩展协议族CHAP(Challenge-Handshake Authentication Protocol)PAP(Password Authentication Protocol),主要用于网络安全方面的验证。

PP报文封装的帧格式

PPP报文封装格式如图2所示。

图2 PPP报文格式

各字段的含义如下:

  • Flag域

    Flag域标识一个物理帧的起始和结束,该字节为0x7E

  • Address域

    Address域可以唯一标识对端。PPP协议是被运用在点对点的链路上,因此,使用PPP协议互连的两个通信设备无须知道对方的数据链路层地址。按照协议的规定将该字节填充为全1的广播地址,对于PPP协议来说,该字段无实际意义。

  • Control域

    该字段默认值为0x03,表明为无序号帧,PPP默认没有采用序列号和确认应答来实现可靠传输。

    Address和Control域一起标识此报文为PPP报文,即PPP报文头为FF03。

  • Protocol域

    Protocol域可用来区分PPP数据帧中信息域所承载的数据包类型。

  • Information域

    Information域最大长度是1500字节,其中包括填充域的内容。Information域的最大长度称为最大接收单元MRU(Maximum Receive Unit)。MRU的缺省值为1500字节,在实际应用当中可根据实际需要进行MRU的协商。

  • FCS域

    FCS域的功能主要对PPP数据帧传输的正确性进行检测。

    PPP的建链过程

    下图是PPP协议整个链路过程需经历阶段的状态转移图:

    图1 PPP链路建立过程

    PPP运行的过程简单描述如下:

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

  • 在Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU(Maximum Receive Unit)、验证方式和魔术字(magic number)等选项。LCP协商成功后进入Opened状态,表示底层链路已经建立

  • 如果配置了验证,将进入Authenticate阶段,开始CHAP或PAP验证。如果没有配置验证,则直接进入Network阶段。

  • 在Authenticate阶段,如果验证失败,进入Terminate阶段,拆除链路,LCP状态转为Down。如果验证成功,进入Network阶段,此时LCP状态仍为Opened

  • 在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文

    NCP协商包括IPCP(IP Control Protocol)、MPLSCP(MPLS Control Protocol)等协商。IPCP协商内容主要包括双方的IP地址

  • NCP协商成功后,PPP链路将一直保持通信。PPP运行过程中,可以随时中断连接,物理链路断开、认证失败、超时定时器时间到、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。

  • 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接,开始新的PPP链路建立。

Establish阶段(链路建立阶段)

Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU、验证方式和魔术字(magic number)等选项。当完成配置报文的交换后,则会继续向下一个阶段跃迁。

在链路建立阶段,LCP的状态机会发生如下改变。

  • 当链路处于不可用阶段时,此时LCP的状态机处于初始化Initial状态或准备启动Starting状态。当检测到链路可用时,则物理层会向链路层发送一个Up事件。链路层收到该事件后,会将LCP的状态机从当前状态改变为Request-Sent(请求发送)状态,根据此时的状态机LCP会进行相应的动作,也就是开始发送Configure-Request报文来配置数据链路。

  • 如果本端设备先收到Configure-Ack报文,则LCP的状态机从Request-Sent状态改变为Ack-Received状态,本端向对端发送Configure-Ack报文以后,LCP的状态机从Ack-Received状态改变为Opened状态。

  • 如果本端设备先向对端发送Configure-Ack报文,则LCP的状态机从Request-Sent状态改变为Ack-Sent状态,本端收到对端发送的Configure-Ack报文以后,LCP的状态机从Ack-Sent状态改变为Opened状态。

  • LCP状态机变为Open状态以后就完成当前阶段的协商,并向下一个阶段跃迁。

下一个阶段既可能是验证阶段,也可能是网络层协商阶段。下一阶段的选择是依据链路两端的设备配置的,通常由用户来配置。

CHAP与PAP验证过程对比
  • PAP认证中,口令以明文方式在链路上发送,完成PPP链路建立后,被验证方会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以安全性不高。当实际应用过程中,对安全性要求不高时,可以采用PAP认证建立PPP连接。

  • CHAP认证中,验证协议为三次握手验证协议。它在网络上传输用户名,而并不传输用户密码,因此安全性比PAP认证高。当实际应用过程中,对安全性要求较高时,可以采用CHAP认证建立PPP连接。

Network阶段(网络层协商阶段)

PPP完成了前面几个阶段,通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。每个NCP协议可在任何时间打开和关闭,当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层数据传输。

Terminate阶段(网络终止阶段)

PPP能在任何时候终止链路。当载波丢失、认证失败或管理员人为关闭链路等情况均会导致链路终止。

PPPoE典型组网

PPPoE组网结构采用Client/Server模型,PPPoE的客户端为PPPoE Client,PPPoE的服务器端为PPPoE Server。PPPoE Client向PPPoE Server发起连接请求,PPPoE Server为PPPoE Client提供接入控制、认证等功能

设备作为PPPoE Client

如图1所示,Router A作为PPPoE Client下行连接局域网用户,Router B是运营商的设备。所有主机不用安装PPPoE Client拨号软件,同一个局域网中的所有主机共享一个账号,通过Router A与Router B建立PPPoE会话。

图1 设备作为PPPoE Client组网图

设备作为PPPoE Server

设备作为PPPoE Server,支持动态分配IP地址,提供多种认证方式,适用于校园、智能小区等通过以太网接入Internet的组网应用。

如图2所示,所有主机上安装PPPoE Client拨号软件,每个主机都是一个PPPoE Client,分别与Router建立一个PPPoE会话。每个主机单独使用一个帐号,方便运营商对用户进行计费和控制。

图2 设备作为PPPoE Server组网图

设备作为PPPoE Server时,对端的PPPoE Client可以是安装拨号软件的主机,也可以是路由器设备。

PPPoE拨号的工作原理

PPPoE拨号是为了实现PPPoE Client与PPPoE Server之间的连接,建立PPPoE会话,如图1所示。

图1 PPPoE拨号过程

PPPoE拨号可分为三个阶段,即Discovery阶段、Session阶段和Terminate阶段。

Discovery阶段

Discovery阶段由四个过程组成。

  1. PPPoE Client广播发送一个PADI(PPPoE Active Discovery Initial)报文,在此报文中包含PPPoE Client想要得到的服务类型信息。

  2. 所有的PPPoE Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO(PPPoE Active Discovery Offer)报文。

  3. 根据网络的拓扑结构,PPPoE Client可能收到多个PPPoE Server发送的PADO报文,PPPoE Client选择最先收到的PADO报文对应的PPPoE Server做为自己的PPPoE Server,并单播发送一个PADR(PPPoE Active Discovery Request)报文。

  4. PPPoE Server产生一个唯一的会话ID(Session ID),标识和PPPoE Client的这个会话,通过发送一个PADS(PPPoE Active Discovery Session-confirmation)报文把会话ID发送给PPPoE Client,会话建立成功后便进入PPPoE Session阶段。

完成之后通信双方都会知道PPPoE的Session_ID以及对方的以太网地址,它们共同确定了唯一的PPPoE Session。

Session阶段

PPPoE 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阶段所有的以太网数据包都是单播发送的。

Terminate阶段

PPP通信双方可以使用PPP协议自身来结束PPPoE会话,当无法使用PPP协议结束会话时可以使用PADT(PPPoE Active Discovery Terminate)报文。

进入PPPoE Session阶段后,PPPoE Client和PPPoE Server都可以通过发送PADT报文的方式结束PPPoE连接。PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了。

配置设备作为PPPoE Server/Client示例

组网需求

如图1所示,局域网内主机与设备直连,设备作为PPPoE Server,企业网内的主机需要通过PPPoE拨号接入Internet。

用户在主机上安装拨号软件,每个主机单独使用一个帐号进行拨号上网。用户需求如下:

  • PPPoE Server为主机动态分配IP地址。

  • PPPoE Server通过AAA本地认证认证主机用户。

  • PPPoE Server为主机分配DNS服务器地址。

图1 设备作为PPPoE Server组网图

配置思路

采用如下的配置思路:

  1. 配置通过使用全局地址池给对端分配地址,实现PPPoE Server为主机动态分配IP地址。
  2. 配置PPPoE认证用户,实现PPPoE Server对用户主机的认证。
  3. 配置PPPoE Server为对端设备指定DNS服务器的IP地址。

设备作为PPPoE Server的配置文件

#
 sysname PPPoE Server
#
ip pool pool1
 gateway-list 192.168.10.1
 network 192.168.10.0 mask 255.255.255.0
#
aaa
 authentication-scheme system_a
 authorization-scheme system_a
 domain system
  authentication-scheme system_a
  authorization-scheme system_a
 local-user user1@system password cipher Huawei@123
 local-user user1@system privilege level 0
 local-user user1@system service-type ppp
#
interface Virtual-Template1
 ppp authentication-mode chap domain system
 remote address pool pool1
 ppp ipcp dns 10.10.10.10 10.10.10.11
 ip address 192.168.10.1 255.255.255.0
#
interface GigabitEthernet1/0/0
  pppoe-server bind Virtual-Template 1
#
return 
注意:system_a为认证授权默认模板   domain模板为system 用户名为 user1@system 密码为 Huawei@123

设备作为PPPoE Client,企业网内的主机需要通过PPPoE拨号接入Internet。

设备作为PPPoE Client的配置文件

#
 sysname PPPoE Client
#
acl number 3002  
 rule 5 permit ip source 192.168.10.0 0.0.0.255   
#
interface Dialer1
 link-protocol ppp
 ppp chap user user1@system
 ppp chap password cipher Huawei@123
 ip address ppp-negotiate
 dialer user user2
 dialer bundle 1
 nat outbound 3002  
#
interface GigabitEthernet2/0/0
 pppoe-client dial-bundle-number 1
#
ip route-static 0.0.0.0 0.0.0.0 Dialer1
#
return

验证配置结果

在PPPoE Server上可以执行display pppoe-server session all命令,显示PPPoE会话的状态信息和配置信息。根据显示信息判断会话状态是否正常(状态为UP表示正常)、配置是否正确(是否和之前的数据规划和组网一致)。

# 在PPPoE Client上执行命令display pppoe-client session summary,查看PPPoE会话状态和配置信息。根据显示信息判断会话状态是否正常(状态为UP表示正常)、配置是否正确(是否和之前的数据规划和组网一致)。

;