PPP:Point-to-Point Protocol,点到点链路层协议。
PPP包含三个协议族:
(1)LCP(Link Control Protocol),链路控制协议族,主要用来建立、拆除和监控PPP数据链路。
(2)NCP(Network Control Protocol),网络层控制协议族,主要用来协商传输的数据包的格式与类型,例如支持IP协议的NCP叫IPCP;
(3)认证协议族,包括PAP(Password Authentication Protocol,密码认证协议)和CHAP(Challenge Handshake Authentication Protocol,挑战握手认证协议)。
PPP报文封转格式:
Flag域
• Flag域标识一个物理帧的起始和结束,该字节为0x7E。
Address域
• Address域可以唯一标识对端。PPP协议是被运用在点对点的链路上,因此,使用PPP协议互连的两个通信设备无须知道对方的数据链路层地址。按照协议的规定将该字节填充为全1的广播地址,对于PPP协议来说,该字段无实际意义。
Control域
• 该字段默认值为0x03,表明为无序号帧,PPP默认没有采用序列号和确认来实现可靠传输。
• Address和Control域一起标识此报文为PPP报文,即PPP报文头为FF03。
Protocol域
• 协议域可用来区分PPP数据帧中信息域所承载的数据报类型。
LCP报文封装格式
Code域
• 代码域的长度为一个字节,主要是用来标识LCP数据报文的类型。
Identifier域
• 标识域为1个字节,用来匹配请求和响应,当标识域值为非法时,该报文将被丢弃。
• 通常一个配置请求报文的ID是从0x01开始逐步加1的。当对端接收到该配置请求报文后,无论使用何种报文回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致。
Length域
• 长度域的值就是该LCP报文的总字节数据。它是代码域、标志域、长度域和数据域四个域长度的总和。
• 长度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。
Data域
• Type为协商选项类型。
• Length为协商选项长度,它是指Data域的总长度,也就是包含Type、Length和Data。
• Data为协商的选项具体内容。
建链过程
(1)Dead:这是PPP工作开始和结束的阶段。当物理层变为可用状态(UP)之后,PPP进入Establish阶段。
(2)Establish:PPP在此阶段使用LCP协商链路层参数。如果链路层参数协商不成功(FAIL),则PPP连接建立不成功,PPP退回到Dead阶段。如果链路层参数协商成功(OPENED),说明底层链路已经建立,PPP进入Authenticate阶段。协商内容包括:工作方式是SP(single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU、验证方式等等
(3)Authenticate:PPP在此阶段认证对端,如果认证失败(FAIL),则PPP进入Terminate阶段;如果认证成功SUCCESS)或者没配置认证(NONE),则PPP进入Network阶段。
(4)Network:PPP在此阶段使用NCP进行网络层参数协商,协商成功则PPP连接建立成功,开始传输网络层数据包。当上层协议认为应当关闭此连接(例如按需电路)或者管理员手工关闭PPP连接(CLOSING),则PPP进入Terminate阶段。
(5)Terminate:PPP能在任何时候终止链路,比如载波丢失、认证失败、链路质量检测失败、人为关闭。链路建立阶段通过交换LCP的链路中止报文来关闭链路,当链路关闭时,链路层会通知网络层做相应的操作,而且也会通过物理层强制关断链路。对于NCP协议,它是不能也没有必要去关闭PPP链路的。
PAP报文类型
PAP工作过程
(1)PAP为两次握手协议,密码为明文,验证过程仅在链路初始建立阶段进行。
(2)被认证方将配置的用户名和密码信息使用Authenticate-Request报文以明文方式发送给认证方,本例中,用户名为“huawei”,密码为“hello”;
(3)认证方收到被认证方发送的用户名和密码信息之后,根据本地配置的用户名和密码数据库检查用户名和密码信息是否正确匹配,如果正确,则返回Authenticate-Ack报文,表示认证成功,如果不能正确匹配,则返回Authenticate-Nak报文,表示认证失败。
CHAP报文类型
CHAP工作过程
(1)CHAP为三次握手验证协议。它只在网络上传输用户名,并不传输密码。报文中都包含相同的Identifier字段保证是同一次认证。
(2)CHAP单向认证是指一端作为验证方,另一端作为被验证方。双向认证是单向验证的简单叠加,即两端都是既作验证方又做被验证方。实际中一般置采用单向认证。CHAP单向认证分为两种情况:
(3)验证方配置了用户名(即接口配置命令ppp chap user username ),验证方向被验证方发送随机生成的Challenge报文;被验证方收到请求后,如果本端接口已经配置了密码(ppp chap password命令),则直接回复该密码,如果没有配置密码,则在本地查询验证方发来的用户对应的密码,并加密发送回去(Response);验证方收到Response报文后,与自身保存的密码进行比较,以验证认证是否通过。
(4)验证方没有配置用户名,验证方发送Challenge报文(不包含用户名);被验证方收到Challenge报文后,将本地配置的ppp chap password加密发回Response报文;验证方收到Response报文后进行对比以验证是否正确。
IPCP用于协商控制IP参数,使得PPP可用于传输IP数据包。IPCP在PPP链路两端配置,用于激活和停止IP模块,IPCP报文格式、工作过程与LCP几乎相同。
IPCP静态协商IP地址:
MP(Multilink PPP),允许将报文分片从多个点对点链路传输到目的地,可以将多个PPP链路捆绑使用,从而增加带宽。实现方式:虚拟接口模板方式和MP-Group方式。
在LCP阶段,协商是否工作在MP模式下,在NCP阶段,根据MP-Group接口或指定接口模板的各项NCP参数进行NCP协商。
PAP认证配置:
AR1:
int s1/0/0
link-protocol ppp
ppp authentication-mode pap //在端口开启PAP认证
aaa
local-user pppuser password ci 12345678 //创建认证用户
local-user pppuser service-type ppp
AR2:
int s1/0/0
link-protocol ppp
ppp pap local-user pppuser password simple 12345678
密码输入正确,LCP、IPCP(IP control protocol)都会正常起来:
如果密码错误,LCP就会无法建立。
CHAP配置雷同,区别在被认证端的用户密码命令有区别:
AR2:
int s1/0/0
ppp chap user pppuser
ppp chap password simple 12345678
IPCP动态地址协商:
用户没有地址时,需要协商获取地址:
用户端:
int s1/0/0
ip address ppp-negotiate
认证端:
int s1/0/0
reomote address 10.1.1.2