目 录
PPP(Point to Point Protocol)协议是在点到点链路上承载网络层数据包的一种链路层协议,由于它能够提供用户验证、易于扩充,并且支持同/异步通信,因而获得广泛应用。
PPP定义了一整套的协议,包括链路控制协议(LCP)、网络层控制协议(NCP)和验证协议(PAP和CHAP)。
l 链路控制协议(Link Control Protocol,LCP):主要用来建立、拆除和监控数据链路。
l 网络控制协议(Network Control Protocol,NCP):主要用来协商在该数据链路上所传输的数据包的格式与类型。
l 用于网络安全方面的验证协议族PAP和CHAP。
PAP(Password Authentication Protocol)验证为两次握手验证,密码为明文,PAP验证的过程如下:
(1) 被验证方发送用户名和密码到验证方;
(2) 验证方根据本端用户表查看是否有此用户以及密码是否正确,然后返回不同的响应(Acknowledge or Not Acknowledge)。
图1 PAP验证示意图
PAP不是一种安全的验证协议。当验证时,口令以明文方式在链路上发送,并且由于完成PPP链路建立后,被验证方会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以不能防止攻击。
CHAP(Challenge-Handshake Authentication Protocol)验证为三次握手验证,密码为密文(密钥)。
CHAP单向验证是指一端作为验证方,另一端作为被验证方。双向验证是单向验证的简单叠加,即两端都是既作为验证方又作为被验证方。在实际应用中一般只采用单向验证。
CHAP验证过程如下:
(1) 验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge),并同时将本端的用户名附带上一起发送给被验证方;
(2) 被验证方接到验证方的验证请求后,检查本端接口上是否配置了缺省的CHAP密码,如果配置了则被验证方利用报文ID、该缺省密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response);
(3) 如果被验证方检查发现本端接口上没有配置缺省的CHAP密码,则被验证方根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,如果在用户表找到了与验证方用户名相同的用户,便利用报文ID、此用户的密钥(密码)和MD5算法对该随机报文进行加密,将生成的密文和被验证方自己的用户名发回验证方(Response);
(4) 验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,根据比较结果返回不同的响应(Acknowledge or Not Acknowledge)。
图2 CHAP验证示意图
PPP运行过程(参见下图)如下:
(1) 在开始建立PPP链路时,先进入到Establish阶段。
(2) 在Establish阶段PPP链路进行LCP协商,协商内容包括工作方式(是SP还是MP)、验证方式和最大传输单元等。LCP协商成功后进入Opened状态,表示底层链路已经建立。
(3) 如果配置了验证(远端验证本地或者本地验证远端)则进入Authenticate阶段,开始CHAP或PAP验证。
(4) 如果验证失败进入Terminate阶段,拆除链路,LCP状态转为Down;如果验证成功就进入Network协商阶段(NCP),此时LCP状态仍为Opened,而IPCP状态从Initial转到Request。
(5) NCP协商支持IPCP协商,IPCP协商主要包括双方的IP地址。通过NCP协商来选择和配置一个网络层协议。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。
(6) PPP链路将一直保持通信,直至有明确的LCP或NCP帧关闭这条链路,或发生了某些外部事件(例如用户的干预)。
图3 PPP运行流程图
有关PPP的详细说明,请参考RFC1661。
为了增加带宽,可以将多个PPP链路捆绑使用,称为MultiLink PPP,简称MP。MP会将报文分片(小于最小分片包长时不分片)后,从MP链路下的多个PPP通道发送到PPP对端,对端将这些分片组装起来递给网络层。
MP的配置主要有两种方式,一种是通过虚拟模板接口(Virtual-Template,VT),VT是用于配置一个虚拟访问接口(Virtual Access,VA)的模板,将多个PPP链路捆绑成MP之后,需要创建一个VA与对端交换数据。此时,系统将选择一个VT,以便动态地创建一个VA;一种是利用MP-group接口。这两种配置方式的区别主要是:
l 虚拟模板接口方式可以与验证相结合,可以根据对端的用户名找到指定的虚拟模板接口,从而利用模板上的配置,创建相应的捆绑(Bundle,系统中用VT通道来表示),以对应一条MP链路。
l 由一个虚拟模板接口还可以派生出若干个捆绑,每个捆绑对应一条MP链路。那么这样一来,从网络层看来,这若干条MP链路会形成一个点对多点的网络拓扑。从这个意义上讲,虚拟模板接口比MP-group接口更加灵活。
l 为区分虚拟模板接口派生出的多个捆绑,需要指定捆绑方式,系统在虚拟模板接口视图下提供了命令ppp mp binding-mode来指定绑定方式,绑定方式有authentication、both、descriptor三种,缺省是both。authentication是根据验证用户名捆绑,descriptor是根据终端描述符捆绑(LCP协商时,会协商出这个选项值),both是要同时参考这两个值捆绑。
l MP-group接口与虚拟模板接口相比则单纯许多,它是MP的专用接口,不能支持其他应用,也不能利用对端的用户名来指定捆绑,同时也不能派生多个捆绑。但正因为它的简单,导致了它的快速高效、配置简单、容易理解。
MP的协商包括LCP协商和NCP协商两个过程:
l LCP协商:两端首先进行LCP协商,除了协商一般的LCP参数外,还要验证对端接口是否也工作在MP方式下。如果两端工作方式不同,LCP协商不成功。
l NCP协商:在LCP协商成功后,根据MP-group接口或指定虚拟接口模板的各项NCP参数(如IP地址等)进行NCP协商,物理接口配置的NCP参数不起作用。
NCP协商通过后,即可建立MP链路。
MP的作用主要有:
l 增加带宽,结合DCC(Dial Control Center,拨号控制中心)可以做到动态增加或减小带宽
l 负载分担
l 备份
l 利用分片降低时延
MP能在任何支持PPP封装的接口下工作,如串口、ISDN的BRI/PRI接口等,也包括PPPoX(PPPoE、PPPoA、PPPoFR等)这类虚拟接口,建议用户尽可能将同一类的接口捆绑使用,不要将不同类的接口捆绑使用。
PPPoE是Point-to-Point Protocol over Ethernet的简称,它可以通过一个远端接入设备为以太网上的主机提供因特网接入服务,并对接入的每个主机实现控制、计费功能。由于很好地结合了以太网的经济性及PPP良好的可扩展性与管理控制功能, PPPoE在包括小区组网建设等一系列应用中被广泛采用。
PPPoE协议采用Client/Server方式,它将PPP报文封装在以太网帧之内,在以太网上提供点对点的连接。
PPPoE有两个阶段:Discovery阶段和PPP Session阶段,具体如下:
l Discovery阶段
当一个主机想开始PPPoE进程的时候,它必须先识别接入端的以太网MAC地址,建立PPPoE的SESSION ID。这就是Discovery阶段的目的。
l PPP Session阶段
当PPPoE进入Session阶段后PPP报文就可以作为PPPoE帧的净荷封装在以太网帧发到对端,SESSION ID必须是Discovery阶段确定的ID,MAC地址必须是对端的MAC地址,PPP报文从Protocol ID开始。在Session阶段,主机或服务器任何一方都可发PADT(PPPoE Active Discovery Terminate)报文通知对方结束本Session。
关于PPPoE的详细介绍,可以参考RFC2516。
设备提供了PPPoE Server的功能,支持动态分配IP地址,提供本地认证、RADIUS/TACACS+等多种认证方式,配合访问包过滤防火墙及状态防火墙,可以对内部网络提供安全保障,适用于校园、智能小区等通过以太网接入Internet的组网应用。
这种组网方式需要在用户Host上安装PPPoE客户端拨号软件。
PPPoE在ADSL宽带接入中被广泛使用。通常情况下,一台主机如果要通过ADSL接入Internet,必须在主机上安装PPPoE客户端拨号软件。设备实现了PPPoE Client功能(即PPPoE的客户端拨号功能),用户可以不用在Host上安装PPPoE客户端软件即可接入Internet,而且同一个局域网中的所有Host可以共享一个ADSL帐号。
图1 PPPoE Client典型组网图
从图1可以看到:以太网内的计算机连接到设备上,在设备上运行PPPoE Client。上网的数据首先到达设备,再通过PPPoE协议对数据进行封装,经由设备挂接的ADSL Modem到达ADSL接入服务器,最终进入Internet。整个上网过程,不需要用户另外在计算机上安装PPPoE客户端拨号软件就可以实现。