第02章 广域网协议.docx
《第02章 广域网协议.docx》由会员分享,可在线阅读,更多相关《第02章 广域网协议.docx(73页珍藏版)》请在冰豆网上搜索。
第02章广域网协议
第2章广域网协议
本章着重介绍HDLC、X.25、帧中继、多链路帧中继、SLIP和PPP五种广域网的帧结构并通过具体实例来分析它们的调试信息。
HDLC作为高级数据链路控制协议,是一个国际标准。
LAPB作为X.25分组交换网络接口标准的一部分,是HDLC协议中的一个子集。
所以在很多参考书上,都是在介绍X.25标准的时候介绍HDLC协议的。
X.25是传统的分组交换网络,多年来一直作为用户网和分组交换网络之间的接口标准。
X.25分组交换网络动态地对用户传输的信息流分配带宽,有效地解决了突发性、大信息流的传输问题,X.25分组交换网络同时可以对传输的信息进行加密和有效的差错控制,这对早期可靠性较差的物理传输线路来说,不失为一种提高报文传输可靠性的有效手段。
但随着光纤越来越普遍地作为传输媒体,传输出错的概率越来越小,在这种情况下,重复地在链路层和网络层实施差错控制,不仅显得冗余,而且各种错误检测和相互之间的确认应答浪费了一些带宽,增加了报文传输延迟。
帧中继同样属于分组交换网络,但帧中继比X.25有更高的传输速率,非常适合于突发性信息流传输,往往作为LAN和LAN之间的远程互连。
帧中继的接入速率可以很高,目前能达到E1线路的传输速率,而帧中继网络的通信费用又根据实际传输的信息流量计算,不会浪费带宽,因此在各种WAN连接技术中,帧中继是最有可能被用户选中作为远程LAN之间的互连技术。
而多链路帧中继则解决单条帧中继线路带宽不足及可靠行不高等问题,具有一些独特的优势。
对于X.25和帧中继,它们的链路层协议都是和某种WAN技术相联系,完成指定WAN技术中的链路层功能。
WAN技术中有一些只提供物理层承载服务的WAN访问技术如公共交换电信网(PSTN)、ISDNB信道上的电路交换服务、ADSL的远程接入服务和数字数据网(DDN)等,这些服务的共同特点就是为用户提供了点对点的专用物理信道。
而PPP点对点协议是统一在这些物理层承载服务的基础上定义的,使得这些WAN技术的协议结构如图所示:
SLIP串行线路互连网络协议是目前广泛用于在串行线路上传送IP数据报的一种协议,它只是一个事实上的标准,而不是Internet标准。
SLIP只定义了在串行线路上发送封装成链路层帧格式的IP报文中字符的顺序,没有提供动态IP地址分配、报文类型标识、检错纠错、数据压缩等功能,因此是一个非常简单、容易实现的协议。
2.1HDLC协议
本章主要讲述HDLC(highdatalinkcontrol高级数据链路控制)的原理及实现。
本章主要内容
⏹HDLC协议相关术语解析
⏹HDLC协议介绍
⏹HDLC调试命令及调试信息
2.1.1HDLC协议相关术语解析
面向比特传输――可以传输任意比特组合的信息。
2.1.2HDLC协议介绍
HDLC协议介绍主要内容:
⏹HDLC协议概述
⏹HDLC在网络层次结构中的位置
⏹HDLC的帧结构
2.1.2.1HDLC协议概述
在开发了SDLC以后,IBM把它交给了ANSI和ISO,分别被接受为美国标准和国际标准。
ANSI修改了此协议,变成了高级数据通信控制过程ADCCP(advanceddatacommunicationcontrolprocedure)。
ISO修改此协议变成了高级数据链路控制协议HDLC(highleveldatalinkcontrol)。
后来CCITT采纳并修改了HDLC,成为链路访问控制LAP(linkaccessprocedure);作为X.25网络接口标准的一部分,但是后来又修改成了LAPB,使之和后来的HDLC版本更加兼容。
为满足各类应用,HDLC定义了三种工作站类型、两种链路配置类型和三种数据传送操作方式。
三种工作站类型分别是:
▪主站:
负责控制链路操作,由主站发出的帧一般称之为命令帧;
▪从站:
在主站控制下操作,由从站发出的帧一般称之为响应帧,主站和每一个从站都保持一条独立的逻辑链路,当然,所有独立的逻辑链路可以复用同一条物理线路;
▪复合站:
具有主站和从站的特性,复合站即可发送命令帧,又可发响应帧。
两种链路配置类型:
▪非平衡配置:
由一个主站和若干个从站构成的、支持全双工和半双工通信的链路配置类型;
▪平衡配置:
由两个复合站构成、支持全双工和半双工通信的链路通信配置类型。
三种数据传送模式:
▪正常响应模式(NRM):
用于非平衡配置,主站可发起向从站传送数据,但从站只有在收到主站发来的命令后,作为响应,向主站发送数据;
▪异步平衡模式(ABM):
用于平衡配置,任何一个复合站都可以在没有得到对方接收许可的情况下,向对方传送数据;
▪异步响应模式(ARM):
用于非平衡配置,从站可以在没有得到主站明确许可的情况下,发起向主站传送数据,主站仍然负责对链路的控制,包括初始化、错误恢复和断开逻辑链路。
NRM一般用于多点连接链路,比如若干终端利用一条总线连到主机,主机用轮询的方式解决每一个终端的输入问题。
NRM有时也用于点对点链路,特别是当这条链路用于连接主机和终端时。
ABM是这三种模式中最广泛使用的一种,由于节省了轮询的开销,能够最大程度的提高点对点全双工链路的使用效率。
ARM一般较少使用,它主要用于从站需要发起向主站传送数据的特定应用。
2.1.2.2HDLC在网络层次结构中的位置
关于HDLC在网络层次结构中的位置,参看下图:
HDLC在网络层次结构中的位置
2.1.2.3HDLC的帧结构
HDLC是面向位的协议,用位填充来保证数据的透明性。
帧结构如下图
HDLC帧结构
HDLC使用位填充技术来完成成帧。
位填充技术允许数据帧包含任意个数的比特,而且也允许每个字符的编码包含任意个数的比特。
它的工作方式如下:
每一帧是用一个特殊的位模式,即01111110作为开始和结束标志(flag)字节。
当发送方的数据链路层在数据中遇到了5个连续的1时,它自动在其后插入一个0到输出比特流中。
这种位填充技术类似于字符填充技术,后者是在数据中的DLE之前填充一个DLE到输出字符流中。
在空闲的点对点线路上,标志序列01111110不断地进行传输。
最小的帧只有3个字段,共计32位(不计首尾两端的标志)。
控制字段是用作序号、确认及其它目的。
数据字段可以包含任意信息。
尽管随着帧长度的增加,多个集中错误的概率加大,导致校验和的效率降低,但数据字段可以是任意长的。
校验和字段与用CRC-CCITT作为生成器多项式的有名的循环冗余码有微小的差别。
这种演变是可以检查出标志字节的丢失。
FCS由发送方产生,其基本思想是对于完全随机的待发送的帧信息通过循环码计算产生16比特的冗余(即FCS),附于帧的尾部,使得帧和FCS之间具有一定的相关性;在接收端通过识别这种相关性是否遭到了破坏,可以检查出在传输过程中是否发生了错误。
如果不符,则说明传输过程产生了错误。
2.1.2.4HDLC的帧类型
根据一个字节的控制字段的不同,HDLC有三种类型:
HDLC的帧类型
(a)信息帧(I帧)
协议使用了具有3位序列号的滑动窗口。
在任何时刻,最多可以有7帧等待确认。
SEQ(序号)字段是帧的序列号。
NEXT(下一个)字段是一个捎带的确认。
然而,所有的协议都坚持这样的约定:
所捎带的不是正确接收到的最后一帧的序号,而是未收到的第一帧的序号(即下一个希望收到的帧)。
是选择使用收到的最后一帧,还是下一个希望收到的帧是任意的,实现来决定的;但不管进行如何约定,在协议的使用中要始终如一。
P/F位代表POLL/FINAL(查询/最后)。
在计算机(或集中器)查询一组终端时使用。
当按P使用时,计算机请求终端发送数据。
中断发送的所有帧除了最后一帧外,都将P/F位置成P,而最后一帧置成F。
在有些协议中,使用P/F是为了强制另一方立即发送一个监控帧,而不是等待反向传输来捎带窗口信息。
此位用在无序号传输上也有一些微小的差别。
(b)监控帧(S帧)
监控帧的各种类型是由TYPE(类型)字段进行区别的。
类型0是用来指示希望下一个收到帧的一个确认帧(正式名称为RECEIVEREADY,接收准备就绪)。
当没有用于捎带的反向传输时,使用此帧。
类型1是否定性确认帧(正式名称为REJECT,拒绝)。
它用来指明发现了传输差错。
NEXT(下一个)字段指出在序列中未正确收到的第一帧(即要重传的帧)。
要求发送过程重传中NEXT开始的所有未确认的帧。
类型2是RECEIVENOTREADY(接收准备尚未就绪)。
向RECEIVEREADY一样,它确认直到NEXT的所有帧,但不包括NEXT帧,不过它告诉发送过程停止发送。
RECEIVENOTREADY一般用来表明接收方出现某些暂时性的问题,如缓冲区不够,而不是作为滑动窗口流量控制的替代方式。
当问题恢复后,接收过程发送RECEIVEREADY,REJECT,或者某个控制帧。
类型3是SELECTIVEREJECT(选择性拒绝)。
它只要求制定的帧重传。
发送窗口大小是序号空间的1/2或更少时,最好使用它,因此如果接收过程希望缓冲非顺序帧以备后用时,它能使用SELECTIVEREJECT来强制任何指定帧的重传。
HDLC允许带有这种帧类型,但是SDLC和LAPB则不允许,没有定义类型为3的帧。
(c)无序号帧(U帧)
帧的第三种类型为无序号帧(unnumberedframe)。
它有时用于控制目的,但也可以在不可靠非连接服务中用来携带数据。
HDLC使用的无序号帧有:
DISC(DISConnect),用于让机器宣布要停机了。
对方使用UA帧表示统一断开连接。
SABM(置异步平衡方式),该命令用于在两个方向上建立链路,接收方可以用UA帧作肯定的响应,用DM帧作否定的响应。
SNRM(置正常响应方式),它是一种非平衡的方式,线路的一端为“主”,另一端为“从”。
FRMR(帧拒绝),用来表示具有正确的校验和,但语义有错误的帧的到达。
它包括了一个24位数据字段,来告知帧何处有错。
数据字段包括了坏帧的控制字段、窗口参数及用来说明错误类型的n位。
UA(无序号确认帧),控制帧同数据帧一样,可能发生丢失或损坏,因此它们也必须确认。
为此提供了UA这种特殊的控制帧用于此目的。
DM(已断开方式),是一个响应帧,它表明本地已经与链路处于断开状态,并用它对SABM命令作否定应答。
2.1.2.5HDLC操作
HDLC操作涉及三个阶段:
首先,一方初始化数据链路,以便帧能以顺序方式进行交换。
在这个阶段,双方一致认可一些选项。
初始化以后,双方交换数据和控制信息,执行流控制和差错控制。
最后由一方发起终止数据链路的操作。
Ø初始化
初始化过程通过任何一方向对方发送六个设置命令中的一个开始,这个命令主要用于三个目的。
→告诉对方,请求初始化;
→在三种传输模式中,指定一种作为请求模式;
→指定是使用3位顺序还是7位顺序号。
如果另一方接受这个请求,发送一个无编号确认(UA)帧给发起初始化过程的一方,如果拒绝该请求,则发送一个断开模式(DM)帧给发起初始化请求过程的一方。
Ø数据传送
当一方的初始化请求被另一方接受,表明逻辑链路已经建立,双方可以以信息帧的方式传输用户数据。
开始的顺序号均为0,信息帧中的N(S)和N(R)字段就是顺序号,用于流控制和差错控制。
工作站中的HDLC模块对发送的信息帧顺序编号,根据初始化时的约定进行模8或128运算,将运算结果填入发送顺序号N(S)。
N(R)是对收到的信息帧的确认,同时使HDLC模块告诉对方它期望收到的下一个信息帧的顺序号。
监控帧也用于流控制和差错控制,接收就绪(RR)帧用于确认收到的最后一个信息帧,并指明下一个期望收到的信息帧的顺序号,当接收方没有用户数据可用来附加对发送方的确认信息时,必须使用接收就绪(RR)帧。
接收未就绪(RNR)帧和接收就绪帧一样,确认收到的信息帧,但告诉发送方暂停信息帧的发送。
当发出接收未就绪帧的一方又能够接收数据时,必须再向对方发送一个接收就绪(RR)帧。
拒绝(REJ)帧,使对方从N(R)指定的顺序号重新发送信息帧,选择拒绝(SREJ)帧表明发送方只需重发由N(R)指定顺序号的那一帧。
Ø断开
任何一方可以发起断开操作过程,发起断开操作过程的一方发送断开(DISC)帧,另一方必须通过发送无编号应答(UA)帧来接受这个请求。
2.1.3调试命令及调试信息
接口配置HDLC封装以后,可以使用下面的全局命令来对HDLC进行调试
debugHDLCinterfaceall显示封装HDLC接口所有收发帧的内容
debugHDLCinterfacehead显示封装HDLC接口所有收发帧的帧头内容
interface指定封装HDLC的接口,比如serial3/0。
使用命令debugHDLCserial3/0all打印调试信息如下表:
调试信息
解释
lac(config-if-serial3/0)#noshutdown
HDLC(serial3/0)_R:
MADDR_REQUEST22.1.1.2
HDLC(serial3/0)_T:
MADDR_REPLY22.1.1.1
HDLC(serial3/0)_T:
MKEEPALIVErNo=152lNo=152time=6380000
收到对端的ip地址请求22.1.1.2
应答本端的ip地址为22.1.1.
根据接口上设置的keepalive时间间隔来发送保活帧
2.1.4HDLC建链过程
HDLC作为一种广域网协议,其建链过程很简单,双方通过发送地址帧来协商,链路建立成功时,通过发送KEEPALIVE帧来维持链路,具体操作过程如下:
2.1.5HDLC建链实例
下面是迈普路由器完整的HDLC建链过程:
环境说明
两台迈普路由器背靠背相连,封装HDLC协议,同步,速率64K。
调试信息
Ø正常配置情况
下面是具体协商过程中,打开debug调试信息时的内容,现对其进行具体分析:
rtr1#debughdlcs2/0
打开hdlc的调试信息
rtr1(config-if-serial2/0)#nosh
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
发送地址请求帧(本端地址为:
1.1.1.1)
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
重新发送地址请求帧
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
重新发送地址请求帧
HDLC(serial2/0)_R:
MADDR_REPLY1.1.1.2
接收地址响应帧(对端地址为:
1.1.1.2)
LineprotocolonInterfaceserial2/0,changedstatetoup
建链成功
rtr1#HDLC(serial2/0)_R:
MKEEPALIVErNo=915lNo=914time=10306000
接收KEEPALIVE帧(维持链路)
rNo:
对端序号
lNo:
本端序号
time:
对端发送数据时间(标识符)
HDLC(serial2/0)_T:
MKEEPALIVErNo=915lNo=915time=107753000
发送KEEPALIVE帧
Ø将另一端shutdown的情况
rtr1#debughdlcs2/0
rtr1#19:
29:
16:
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
19:
29:
17:
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
19:
29:
22:
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
…………………………………………………..
注释:
由此可以看到rtr1这一端在不断发送地址请求帧,这很可能是另一端处于shutdown的状态。
Ø保活时间不一致的情况
rtr1#debughdlcs2/0
rtr1#18:
48:
52:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67703000
18:
49:
02:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67713000
18:
49:
02:
LineprotocolonInterfaceserial2/0,changedstatetodown
18:
49:
03:
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
18:
49:
03:
HDLC(serial2/0)_R:
MADDR_REPLY1.1.1.2
18:
49:
03:
LineprotocolonInterfaceserial2/0,changedstatetoup
18:
49:
13:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67724000
18:
49:
23:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67734000
18:
49:
33:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67744000
18:
49:
43:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67754000
18:
49:
43:
LineprotocolonInterfaceserial2/0,changedstatetodown
18:
49:
44:
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
18:
49:
44:
HDLC(serial2/0)_R:
MADDR_REPLY1.1.1.2
18:
49:
44:
LineprotocolonInterfaceserial2/0,changedstatetoup
18:
49:
54:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67765000
18:
50:
04:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67775000
18:
50:
14:
HDLC(serial2/0)_T:
MKEEPALIVErNo=21lNo=21time=67785000
18:
50:
14:
LineprotocolonInterfaceserial2/0,changedstatetodown
18:
50:
15:
HDLC(serial2/0)_T:
MADDR_REQUEST1.1.1.1
18:
50:
15:
HDLC(serial2/0)_R:
MADDR_REPLY1.1.1.2
18:
50:
15:
LineprotocolonInterfaceserial2/0,changedstatetoup
……………………………………………………….
注:
上面的debug信息显示配置了HDLC的端口总是不断的up和down,造成这种情况的原因很可能是由于两端的keepalive保活时间的定时器不一致造成的。
打开debug信息后看到,在3倍于本地接口keepalive时间内没有收到对端keepalive报文则HDLC的端口down,随之马上发送地址请求,如果收到对端应答则马上Up。
2.2X.25协议
X.25是ITU-T在70年代制定的一个标准,它在推动分组交换网的发展中做出了很大的贡献。
本章主要内容:
⏹X.25协议相关术语解析
⏹X.25协议介绍
⏹X.25的典型配置和调试
2.2.1X.25协议相关术语解析
VC(VirtualCircuit)――虚电路:
虚电路是广域网提供的一种面向连接的服务。
虚电路按照建立方式的不同,分为PVC(永久虚电路)和SVC(交换虚电路)。
PVC(PermanentVirtualCircuit)――永久虚电路:
PVC是通过人工设定产生的。
不管有没有传送数据,它是一直存在的,除非有人取消它。
SVC(SwitchedVirtualCircuit)――交换虚电路:
SVC是指通过协议自动分配的虚电路。
当有数据要传送时,通过呼叫建立虚电路,而在数据传送完毕后,要拆除虚电路。
LAPB(LinkAccessProcedureBalanced)――平衡型链路接入规程:
是X.25协议数据链路层的规范,它是HDLC(高级数据链路控制)的一个子集。
2.2.2X.25协议介绍
2.2.2.1X.25协议简介
X.25协议是作为公共数据网(PDN)的用户——网络接口协议提出的,它的全称是“公共数据网络中通过专用电路连接的分组式数据终端设备(DTE)和数据电路终接设备(DCE)之间的接口”。
这里的DTE是用户设备,即分组型数据终端设备(执行X.25通信规程的终端),具体的可以是一台按照分组操作的智能终端、主计算机或前端处理机;DCE实际是指DTE所连接的网络分组交换机。
可见,X.25只是一个对公共分组交换网(PSN)接口的规范,它不涉及网络内部的功能实现,所谓的X.25分组交换网只能说是该网络与网络外部DTE的接口遵循X.25标准而已。
DTE和公共分组交换网的连接如下图:
X.25标准规定了三层的功能,如下图,它们分别是物理层、链路层和分组层:
物理层规定了DTE和DCE之间的物理接口,X.25使用的物理层接口标准是X.21,由于X.21是基于数字信道的,所以在物理层使用最多的还是RS-232标准;链路层保证数据通过物理链路进行可靠地传输,X.25使用地链路层标准是LAPB;分组层为外部DTE提供虚电路服务。
2.2.2.2物理层
X.25协议的物理层规定采用X.21建议,但它要求使用数字信号,实际中极少公有网络支持此标准,于是定义了与RS-232相似的模拟接口以作为中间过渡。
X.21建议规定如下:
→机械特性:
采用ISO4903规定的15针连接器和引线分配,通常使用8线;
→电气特性:
平衡型电气特性;
→同步串行传输;
→点到点全双工;
→适用于交换电路和租用电路。
2.2.2.3数据链路层
1.数据链路层的主要功能
数据链路层主要有以下功能:
▪帧的封装、去封装及帧同步
▪帧的顺序接收和确认
▪数据链路的建立、断开和复位
▪流量控制
▪向分组层通知链路状态
2.LAPB的帧格式
LAPB采用了HDLC的帧格式,有三种帧:
信息帧、监督帧和无编号帧,格式如下:
标志字段为0x7E,标识一帧的开始和结束。
地址字段指定发送或接收帧的从站地址。
LAPB单链路操作时,其地址编码有两种:
地址A是DTE地址(0x03),地址B是DCE地址(0x01),规定在命令帧中填对方的地址,在响应帧中填自己的地址。
三种帧有不同的控制字段格式,如下:
信息帧(I帧)携带用户需要传送的数据,采用自动请求重发(ARQ)机制进行流量控制和差错控制,控制信息附加在信息帧内。
当没有信息帧可以用来搭载ARQ控制信息时,就用监督帧(S帧)来传送ARQ控制信息。
无编号帧(U帧)提