HDLC和PPP

广域网中经常会使用串行链路来提供远距离的数据传输,高级数据链路控制HDLC(High-Level Data Link Control)和点对点协议PPP( Point to Point Protocol)是两种典型的串口封装协议。

串行链路的数据传输方式

串行链路普遍用于广域网中。串行链路中定义了两种数据传输方式:异步和同步。

​​

异步传输

是以字节为单位来传输数据,并且需要采用额外的起始位和停止位来标记每个字节的开始和结束。起始位为二进制值0,停止位为二进制值1。在这种传输方式下,开始和停止位占据发送数据的相当大的比例,每个字节的发送都需要额外的开销。

同步传输

是以帧为单位来传输数据,在通信时需要使用时钟来同步本端和对端的设备通信。DCE即数据通信设备,它提供了一个用于同步DCE设备和DTE设备之间数据传输的时钟信号。DTE即数据终端设备,它通常使用DCE产生的时钟信号。

HDLC

High-level Data Link Control,高级数据链路控制,简称HDLC,是一种面向比特的链路层协议。

ISO制定的HDLC是一种面向比特的通信规则。HDLC传送的信息单位为帧。作为面向比特的同步数据控制协议的典型,HDLC具有如下特点:
协议不依赖于任何一种字符编码集;
数据报文可透明传输,用于透明传输的“0比特插入法”易于硬件实现;
全双工通信,不必等待确认可连续发送数据,有较高的数据链路传输效率;
所有帧均采用CRC校验,并对信息帧进行编号,可防止漏收或重收,传输可靠性高;
传输控制功能与处理功能分离,具有较大的灵活性和较完善的控制功能。

完整的HDLC帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成。
标志字段为01111110,用以标志帧的开始与结束,也可以作为帧与帧之间的填充字符。
地址字段携带的是地址信息。
控制字段用于构成各种命令及响应,以便对链路进行监视与控制。发送方利用控制字段来通知接收方来执行约定的操作;相反,接收方用该字段作为对命令的响应,报告已经完成的操作或状态的变化。
信息字段可以包含任意长度的二进制数,其上限由FCS字段或通讯节点的缓存容量来决定,目前用得较多的是1000-2000比特,而下限可以是0,即无信息字段。监控帧中不能有信息字段。
帧检验序列字段可以使用16位CRC对两个标志字段之间的内容进行校验。
HDLC有三种类型的帧:
信息帧(I帧)用于传送有效信息或数据,通常简称为I帧。
监控帧(S帧)用于差错控制和流量控制,通常称为S帧。S帧的标志是控制字段的前两个比特位为“10”。S帧不带信息字段,只有6个字节即48个比特。
无编号帧(U帧)简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能。

基本配置

  1. 用户只需要在串行接口视图下运行link-protocol hdlc​​命令就可以使能接口的HDLC协议。
  1. 华为设备上的串行接口默认运行PPP协议。
  2. 用户必须在串行链路两端的端口上配置相同的链路协议,双方才能通信。

​​

[RTA]interface Serial 1/0/0 
[RTA-Serial1/0/0]link-protocol hdlc 
Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N]:y 
[RTA-Serial1/0/0]ip address 10.0.1.1 30
  1. 一个接口如果没有IP地址就无法生成路由,也就无法转发报文。
  2. IP地址借用允许一个没有IP地址的接口从其它接口借用IP地址。这样可以避免一个接口独占IP地址,节省IP地址资源。
  3. 一般建议借用loopback接口的IP地址,因为这类接口总是处于活跃(active)状态,因而能提供稳定可用的IP地址。
    本例中,在RTA的S1/0/0接口配置完接口地址借用之后,还需要在RTA上配置静态路由,以使RTA能够转发数据到10.1.1.0/24网络。
[RTA]interface Serial 1/0/0 
[RTA-Serial1/0/0]link-protocol hdlc 
Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N]:y 
[RTA-Serial1/0/0]ip address unnumbered interface loopBack 0
[RTA]ip route-static 10.1.1.0 24 Serial 1/0/0 

执行display ip interface brief​​命令可以查看路由器接口简要信息。如果有IP地址被借用,该IP地址会显示在多个接口上,说明借用loopback接口的IP地址成功。

[RTA]display ip interface brief 
*down: administratively down ^down: standby (l): loopback
(s): spoofing
……
Interface                IP Address/Mask    Physical   Protocol  
LoopBack0                10.1.1.1/32          up         up(s)   
Serial1/0/0              10.1.1.1/32          up         up  
Serial1/0/1              unassigned           up         down  

PPP协议原理与配置

PPP协议是一种点到点链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。PPP协议有如下优点:
PPP既支持同步传输又支持异步传输,而X.25、FR(Frame Relay)等数据链路层协议仅支持同步传输,SLIP仅支持异步传输。
PPP协议具有很好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE。

  • PPP包含两个组件:
  1. 链路控制协议-LCP(Link Control Protocol )【必要】协议,用于各种链路层参数的协商,用来建立、拆除和监控PPP数据链路。
    LCP可以自动检测链路环境,如是否存在环路;协商链路参数,如最大数据包长度,使用何种认证协议等等。与其他数据链路层协议相比,PPP协议的一个重要特点是可以提供认证功能,链路两端可以协商使用何种认证协议来实施认证过程,只有认证成功之后才会建立连接。
  2. 网络层控制协议-NCP(Network Control Protocol)【必要】协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持了网络层协议,用于对不同的网络层协议进行连接建立和参数协商。
    每一个NCP对应了一种网络层协议,用于协商网络层地址等参数,例如IPCP用于协商控制IP协议,IPXCP用于协商控制IPX协议等。
  • PPP提供了安全认证协议族【可选】PAP(Password Authentication Protocol,密码验证协议)和CHAP(Challenge Handshake Authentication Protocol,挑战握手认证协议),更好的保证了网络的安全性。
    无重传机制,网络开销小,速度快。

PPP链路建立过程​

Dead阶段:也称为物理层不可用阶段。当通信双方的两端检测到物理线路激活时,就会从Dead阶段迁移至Establish阶段,即链路建立阶段。
在Establish阶段,PPP链路进行LCP参数协商。协商内容包括最大接收单元MRU、认证方式、魔术字(Magic Number)等选项。LCP参数协商成功后会进入Opened状态,表示底层链路已经建立。
多数情况下,链路两端的设备是需要经过认证阶段(Authenticate)后才能够进入到网络层协议阶段。PPP链路在缺省情况下是不要求进行认证的。如果要求认证,则在链路建立阶段必须指定认证协议。认证方式是在链路建立阶段双方进行协商的。如果在这个阶段再次收到了Configure-Request报文,则又会返回到链路建立阶段。
在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。如果在这个阶段收到了Configure-Request报文,也会返回到链路建立阶段。
NCP协商成功后,PPP链路将保持通信状态。PPP运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接。

LCP报文

Configure-Request(配置请求):链路层协商过程中发送的第一个报文,该报文表明点对点双方开始进行链路层参数的协商。
Configure-Ack(配置响应):收到对端发来的Configure-Request报文,如果参数取值完全接受,则以此报文响应。
Configure-Nak(配置不响应):收到对端发来的Configure-Request报文,如果参数取值不被本端认可,则发送此报文并且携带本端可接受的配置参数。
Configure-Reject(配置拒绝):收到对端发来的Configure-Request报文,如果本端不能识别对端发送的Configure-Request中的某些参数,则发送此报文并且携带那些本端不能认别的配置参数。

报文类型作用
Configure-Request包含发送者试图与对端建立连接时使用的参数列表
Configure-Ack表示完全接受对端发送的Configure-Request的参数取值
Configure-Nak表示对端发送的Configure-Request中的某些参数取值在本端不被认可
Configure-Reject表示对端发送的Configure-Request中的某些参数本端不能识别

​​​​​​

LCP协商参数

参数作用缺省值
最大接收单元MRUPPP数据帧中Information字段和Padding字段的总长度1500字节
认证协议认证对端使用的认证协议不认证
魔术字魔术字为一个随机产生的数字,用于检测链路环路,如果收到的LCP报文中的魔术字和本端产生的魔术字相同,则认为链路有环路启用

在VRP平台上,MRU参数使用接口上配置的最大传输单元(MTU)值来表示。
常用的PPP认证协议有PAP和CHAP,一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等认证信息。
LCP使用魔术字来检测链路环路和其它异常情况。魔术字为随机产生的一个数字,随机机制需要保证两端产生相同魔术字的可能性几乎为0。
收到一个Configure-Request报文之后,其包含的魔术字需要和本地产生的魔术字做比较,如果不同,表示链路无环路,则使用Confugure-Ack报文确认(其它参数也协商成功),表示魔术字协商成功。在后续发送的报文中,如果报文含有魔术字字段,则该字段设置为协商成功的魔术字。

PPP认证模式 - PAP

链路协商成功后,进行认证协商(此过程可选)。认证协商有两种模式,PAP和CHAP。
PAP认证双方有两次握手。协商报文以明文的形式在链路上传输。

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

​​

PPP认证模式 - CHAP

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

​​​

CHAP认证过程需要三次报文的交互。过程如下:
认证方主动发起认证请求,认证方向被认证方发送Challenge报文,报文内包含随机数(Random)和ID。
被认证方收到此Challenge报文之后,进行一次加密运算,运算公式为MD5{ ID+随机数+密码},意思是将Identifier、随机数和密码三部分连成一个字符串,然后对此字符串做MD5运算,得到一个16 Byte长的摘要信息,然后将此摘要信息和端口上配置的CHAP用户名一起封装在Response报文中发回认证方。
认证方接收到被认证方发送的Response报文之后,按照其中的用户名在本地查找相应的密码信息,得到密码信息之后,进行一次加密运算,运算方式和被认证方的加密运算方式相同;然后将加密运算得到的摘要信息和Response报文中封装的摘要信息做比较,相同则认证成功,不相同则认证失败。
使用CHAP认证方式时,被认证方的密码是被加密后才进行传输的,这样就极大的提高了安全性。
加密算法声明
使用加密算法时,MD5(数字签名场景和口令加密)加密算法安全性低,存在安全风险,在协议支持的加密算法选择范围内,建议使用更安全的加密算法,例如AES/RSA(2048位以上)/SHA2/HMAC-SHA2。

NCP协商 - 静态IP地址协商

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

NCP主要用来建立和配置不同的网络层协议,协商在该数据链路上所传输的数据包的格式与类型。常见的有IPCP等。
静态IP地址商过程如下:
每一端都要发送Configure-Request报文,在此报文中包含本地配置的IP地址;
每一端接收到此Configure-Request报文之后,检查其中的IP地址,如果IP地址是一个合法的单播IP地址,而且和本地配置的IP地址不同(没有IP冲突),则认为对端可以使用该地址,回应一个Configure-Ack报文。

​​

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

​​

动态协商IP地址的过程如下:
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.2,R1认为此地址合法,回应Configure-Ack报文。

PPP协议配置

//配置接口封装PPP协议
[Huawei-Serial0/0/0] link-protocol ppp
在接口视图下,将接口封装协议改为ppp,华为串行接口默认封装协议为ppp。
//配置协商超时时间间隔
[Huawei-Serial0/0/0] ppp timer negotiate seconds
在PPP LCP协商过程中,本端设备会向对端设备发送LCP协商报文,如果在指定协商时间间隔内没有收到对端的应答报文,则重新发送。

//配置验证方以PAP方式认证对端
[Huawei-aaa] local-user user-name  password { cipher | irreversible-cipher } password
[Huawei-aaa] local-user user-name service-type ppp

[Huawei-Serial0/0/0] ppp authentication-mode pap
配置验证方以PAP方式认证对端,首先需要通过AAA将被验证方的用户名和密码加入本地用户列表,然后选择认证模式。
//配置被验证方以PAP方式被对端认证
[Huawei-Serial0/0/0] ppp pap local-user user-name password { cipher | simple } password
配置本地被对端以PAP方式验证时,本地发送PAP用户名和口令。

//配置验证方以CHAP方式认证对端
[Huawei-aaa] local-user user-name  password { cipher | irreversible-cipher } password
[Huawei-aaa] local-user user-name service-type ppp

[Huawei-Serial0/0/0] ppp authentication-mode chap 
//配置被验证方以CHAP方式被对端认证
[Huawei-Serial0/0/0] ppp chap user user-name

[Huawei-Serial0/0/0] ppp chap password { cipher | simple } password
配置本地用户名,配置本地被对端以CHAP方式验证时的口令。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值