第三章 ISIS 路由协议.docx

上传人:b****4 文档编号:4262602 上传时间:2022-11-28 格式:DOCX 页数:25 大小:712.27KB
下载 相关 举报
第三章 ISIS 路由协议.docx_第1页
第1页 / 共25页
第三章 ISIS 路由协议.docx_第2页
第2页 / 共25页
第三章 ISIS 路由协议.docx_第3页
第3页 / 共25页
第三章 ISIS 路由协议.docx_第4页
第4页 / 共25页
第三章 ISIS 路由协议.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

第三章 ISIS 路由协议.docx

《第三章 ISIS 路由协议.docx》由会员分享,可在线阅读,更多相关《第三章 ISIS 路由协议.docx(25页珍藏版)》请在冰豆网上搜索。

第三章 ISIS 路由协议.docx

第三章ISIS路由协议

第三章IS-IS路由协议

3.1概述

在随着互联网的演化而出现的所有IP路由协议中,只有3种路由协议经受住了考验,这就是BGP、OSPF、IS-IS。

什么是IS-IS协议呢?

IS-IS就是IntermediateSystem-IntermediateSystem就是中间系统-中间系统,当前的IS-IS规范中把网络节点叫做中间系统,其他协议比如OSPF把节点叫做路由器。

在IS-IS中,路由器被描述为是一个中间系统(IntermediateSystem,IS),主机被描述为端系统(EndSystem,ES)。

因此提供主机和路由器之间的通信的协议即为ES-IS;而路由器之间的通信即为IS-IS。

国际标准化组织,也就是现在ITU指定了OSI七层模型,最初网络服务只定义了面向连接的通信服务(CONS),随后做了修订,定义了无连接通信的功能,叫CLNS;和面向连接服务CONS不同的是在转发数据包的网络设备间无需预先定义端到端的路径。

CLNS由CLNP、IS-IS、ES-IS等ISO协议支持。

CLNS、ES-IS、IS-IS等都是独立的网络层协议,与之形成对比的是TCP/IP协议,共存于OSI的第三层。

编码格式:

●CLNP:

0x81

●ES-IS:

0x82

●IS-IS:

0x83

CLNP类似于IP协议,CLNP定义为独立于数据链路层。

IP是TCP/IP协议族唯一的网络层协议,包括路由协议和用户数据都封装在IP包内;而CLNP、ES-IS、IS-IS协议都是网络层协议,分别被封装在数据链路层的帧内,这也是ISIS比IP安全的一个重要原因。

看看数据包的格式图例:

其实简单的可以理解为:

●IP协议相当于CLNS都是无连接的;

●IP包相当于CLNP包;

●OSPF为IP包进行路由、而ISIS则是为CLNP包提供路由服务。

什么是ES-IS?

ES-IS是终端系统-中间系统路由交换协议,使用同一网段或链路的ISO终端系统和路由器之间自动交换信息,在后面的试验中将展示形成ES-IS邻接的过程。

路由器发送IS报文hello(ISH)主机发送ES报文hello(ESH)。

ES主机(ES是没有路由能力的))靠侦听IS发的ISH报文来发现最近的IS路由器,当ES要发送数据到其他的ES的时候,它发送包到直连的IS(如果多个IS的话,则随机选择一个IS),IS路由器查找目的地址然后转发数据。

ES和IS的通信可以叫做Level-0;

Level-1是在多个IS路由器在相同区域中实现路由;

Level-2是在多个IS路由器在不同区域中实现路由。

IS-IS也定义了2层区域的概念,和OSPF不同的是,OSPF的区域是以路由器为边界;而IS-IS中是以链路为边界,如下图:

连接不同区域的IS为Level2(L2)路由器,或者是同时具有Level1和Level2的L1/L2路由器,L1/L2路由器要同时分别维持L1和L2的LSDB。

在IS-IS中,也有类似于RID的SystemID。

由于IS-IS中Domain区域是以路由器为边界,因此,1个路由器的每个接口上的区域ID都是一样的。

在IS-IS中,1个路由器最多可以具有3个区域ID,这样对区域中的过渡是很有用的。

什么是Area和Domain?

Area:

这是在路由协议中的一个概念,为了划分层次,减少路由信息,减轻路由器的负担,降低路由震荡等等。

Domain:

好像只在IS-IS中才有,在一个AS域中可以划分出好多Domain,每个Domain可以应用不同的路由协议,Level-3级路由就是可以在不同的Domain中进行路由的相互引入。

IS-IS协议最初是为了用来路由CLNP数据包,但随着IP的流行,IETF修改IS-IS来进行IP包路由,所以说IS-IS是双重的(也叫集成IS-IS),既可以路由CLNP又可以路由IP包,OSPF只能路由IP数据包。

3.2IS-IS寻址

每个节点都需要定义地址,在ISIS包中的地址为CLNP的NSAP格式。

3.2.1NSAP格式

整个NSAP地址由两大部分组成:

●IDP(Inter-DomainPortion)域间部分,相当于TCP/IP地址中的主网络号。

●DSP(DomainServicePortion)域内服务标识部分,相当于TCP/IP地址中的子网号,主机号外加端口号。

IDP由两部分组成:

●AFI(AuthorityandFormatID)机构与格式ID用来表示地址格式或地址分配机构。

●IDI(Inter-DomainID)域间ID用来标识域。

DSP由三部分组成:

●HODSP(HighOrderDSP)DSP高位,用来分割区域,相当于TCP/IP地址中的子网部分。

●SID(SystemID)系统ID,用来区分主机,相当于TCP/IP地址中的主机部分。

●NSEL(NSAP-Selector)NSAP标识,用来指示选定的服务,相当于TCP/IP地址中的端口号。

ISO-IGRP路由采用三层体系:

域(IDP,第三级),区域(HODSP,第二级)和系统ID(SystemID,第一级)。

ISIS采用二层体系:

区域ID(IDP+HODSP)+系统ID

现在我们来看一下NSAP地址中各部分的长度。

对于CiscoIS-IS路由协议,NSEL固定为一个字节,系统ID固定为6个字节,区域地址长度可由1-13字节构成,所以整个NSAP地址总长度为8-20字节。

对于CiscoISO-IGRP路由协议,AreaID被分为DomainID和AreaID两部分,AreaID为2个字节,DomainID最少一个字节,所以NSAP地址总长度为10-20字节

AFI=39表示ISO数据国家代码。

AFI=47表示ISO国际代码指定

NET地址必须以00结尾,且必须为整字节(偶数个十六进制数),中间以dot分隔。

SystemID通常由MAC地址构成或由IP地址转换而来。

DomainID和AreaID则通常在全网内统一指定。

例如:

3.2.2NET(NetworkEntityTitle)网络实体标识

NSEL值定义了网络层服务的用户,路由层是特殊的网络层服务用户,它的SEL值是0,也就是说我们在交换路由信息时将NSEL固定为00,这样的NSAP表示设备自身,我们称之为NET。

NSEL帮助网络层数据发送到适当的应用程序或服务用户,根据OSI方案,网络层服务上面是传输层,也就是说网络层是00,那么传输层就不是00了,如果要将数据提交到传输层的话就是0x21,表示DECNetPhaseIV传输层,0x22表示传输层TP4。

AFI=49的地址为OSI协议的私有地址,像TCP/IP中的10.0.0.0,172.16.0.0-172.31.0.0

和192.168.0.0,后面的实验中通常使用这样的地址。

如果你只想通过IS-IS实现IP路由,

用这个前缀就可以了。

SystemID定义:

Sysid长度在1-8字节之间,cisco遵从GOSIP2.0标准,长度为6字节,与MAC地址一致,所以可以用路由器上一个LAN的MAC地址作为systemid,不过用的最多的是将loopback地址作为systemid,如:

Loopback192.168.1.24

Net49.0001.1921.6800.1024.00

3.2.3几条定址规则

1、位于同一区域内的路由器AreaID必须相同。

2、同一区域内的Level-1IS为了彼此区分必须有惟一的SystemID。

(建议整个域内所有IS都有惟一的SystemID)

3、整个域内所有Level-2IS为了彼此区分必须有惟一的SystemID。

4、包交换网络中,虚电路号或DLCI号码经常加在SystemID的后面构成LANID,这主要是为了防止同时属于多个Area的IS在不同的Area中有相同的SystemID。

5、如果系统检测到SystemID重复,将会报告以下错误:

IS-IS:

possibleduplicatesystemIDdetected

为单个ISIS进程配置多个NET

通常一个ISIS进程只需要一个NET,但可以通过定义多个区域ID的NET可以将合并多个区域,如:

Net49.0001.1921.6800.1024.00

Net49.0002.1921.6800.1024.00

可以将49.0001层1中的lsp传递到49.0002中,从而可以合并2个层1区域。

一般配置多个NET用于:

●区域合并

●区域分离

●重编址

NSAP到主机名的映射

NSAP地址很长为了便于使用,借鉴IP中域名的好处,可将NSAP映射到域名。

ISIS支持动态主机名映射,也就是说可将主机名到nsap的映射信息在isis协议内传输,比手工配置方便多了。

实现此功能的tlv是137类型,承载于参与动态映射的路由器的lsp中。

3.2.4集成IS-IS路由协议

集成ISIS路由就是说同时支持IP和CLNP路由。

根据ISO10589标准,ISIS协议支持2层分层体系。

ISIS即使在IP环境中也要用CLNP节点地址标识路由器,CLNP地址也就是NSAP(NetworkServiceAccessPoints,网络服务访问点)。

一共有三部分组成:

●区域标识符

●系统标识符

●N选择符:

这个是表示网络服务用户,可以是传输层,可以是路由层,和TCPPort差不多,一般N选择符都为0,表示将数据提交到网络层,也就是路由器本身。

这个N选择符为0的NSAP地址可以简单的叫做NET地址

区域标识符:

如果这个标识符号一样就表示路由器在同一个域中。

实际上一台路由器可以同时属于多个区域,也就是说区域符不一样,但系统标识符必须相同。

属于同一区域并且为层1的路由器叫层1路由器,属于不同区域的路由器通过层2邻接来交换路由信息。

层2路由器也叫主干路由器,和OSPF的Area0路由器差不多。

路由器可以是层1,也可以是层2,也可以同时为层1-2路由器,cisco路由器默认为层1-2。

层1-2路由器相当于OSPF中的Abr路由器,可以为层1域的路由器提供区域连接,把层1的路由信息发往主干。

Cisco也支持把层2的路由引入到层1中,以次来消除isis次优路径选择的问题。

次优路径选择:

R1发往R2的数据是蓝色线,红色线是返回路径,从R2发会给R1的路径为什么选择那条度量总值为50的而不选择蓝色的那条45的呢?

因为R2发给不知道主干的路由,所以只把数据发给默认的本地的层2路由器,所以选择了一条度量为10的最近的层2路由器。

层2区域必须是连续的,所有路由器必须完全互连,Cisco不支持像OSPF那样的虚链路。

层1域中的路由器只关心本域中的网络,层1-2路由器可以发一条默认路由到层1域,这样层1的路由器可以未知数据统统发往层1-2路由器。

ISIS层次:

●Level-1:

相当于单个区域的概念,由本区域中的所有level-1路由器组成,本区域所有的路由信息将发往backbone中。

●Level-2:

骨干Backbone,由所有的L2(含L1-L2)路由器组成,backbone必须是连续的。

3.3ISIS数据包

在CLNP中数据包叫做PDU。

ISIS数据包分成3类:

●Hello:

用来建立和维护邻接;

●链路状态数据包:

用户在isis节点间发布路由信息;

●序列号数据包:

用户控制数据包链路状态数据包的发布,提供lsdb的同步机制。

hello包又分了3类:

●LAN层1hello数据包

●LAN层2hello数据包

●点到点hello数据包,P2P只有这一种类型

链路状态数据包分2类:

●层1链路状态数据包

●层2链路状态数据包

序列号数据包分4类:

●层1完全序列号数据包(层1CSNP)

●层2完全序列号数据包(层2CSNP)

●层1部分序列号数据包(层1PSNP)

●层2部分序列号数据包(层2PSNP)

数据包的格式:

每种类型的isis数据包都由包头和还有tlv组成。

不同类型的isis数据包头字段稍有不同,OSPF中包头都是一样的都是24字节。

ISIS数据包头前8个字段在所有的ISIS数据包中相同,接下来每种类型数据包都有自己的一套附加的包头字段,然后是TLV字段,各种类型的数据包,长度都有差异。

每种类型的数据包仅支持某种特定的TLV字段。

ISIS协议设计的关键在于方便的引入新的TLV值,而不是引入新的数据包格式。

ISIS的网络类型:

在ISIS网络中只有2种类型,一种是点到点,一种是广播链路。

Cisco基于FR和ATM等这些NBMA的ISIS中,当配置在多点模式中,工作在广播模式(建立紧接的时候要发LAN1和LAN2的Hello包),需要全连通环境,建议在这类环境中配置成点到点类型。

3.3.1ISIS邻接

伪节点:

同一LAN上所有的ISIS路由器彼此形成邻接关系,OSPF是只和DR和BDR形成邻接。

为了减少LAN邻接的复杂性和高效扩散LSP,ISIS把广播链路模拟为节点,也就是伪节点。

在LAN上选举一个DIS(指定中间系统)和本网络中所有路由器建立联系。

选举DIS基于SNPA地址(MAC)和接口优先级,cisco默认为64。

(OSPF默认优先级是1)

LAN只有DIS,没有备份的DIS,因为当DIS失效的时候,另一台会马上被选举成DIS,不会影响邻接,DIS发送hello包的频率是其他路由器的3倍,DIS默认的hello间隔是3.3秒,其他是10秒,所以DISdown会很快进行选举。

不像OSPF,如果没有BDR的话,那么DRdown的话所有的邻接关系会中断。

DIS负责生成伪节点LSP,伪节点和本网络中的所有路由器建立联系,并且不允许它们之间直接联系。

只有在广播和nbma网络接口上才会选举DIS,P2P类型接口无需选举DIS。

如果有一台具有较高优先级的路由器加进来的话,它就会被选举成DIS,所有的路由器都能参加选举,不像OSPF中如果把优先级设置为0的话就不能参加选举,ISIS没有这个功能。

不过,可以修改优先级变小以使路由器不成为DIS。

LAN层1和层2DIS的功能:

●生成伪节点链路状态数据包,向所有路由器通告链路状态

●行使LAN上相应路由选择层次上的扩散功能

看看伪节点的图示:

ISIS邻接靠3种类型的IIH(IS-ISHello):

●点到点IIH――――――在点到点链路

●层1LANIIH―――――广播链路形成层1邻接

●层2LANIIH―――――广播链路形成层2邻接

要交换什么路由信息,要看建立了什么邻接,同一个区域内的路由器至少可以形成层1邻接。

在cisco路由器上路由器默认为层1-2,也就是说如果2台cisco路由器在同一区域中,可以形成层1和层2邻接。

不同区域只能形成层2邻接。

R1和R2,R3和R4在同一区域中,所以形成L1邻接,R2和R3在不同域中所以形成L2邻接。

在看看这2张图,自己分析一下每一台路由器形成哪层邻接:

再看下面这张,看看邻接关系:

邻接计时器:

Hello间隔:

hello包默认间隔10秒发给邻居,在DIS中间隔默认是3.3秒(为什么快是为了如果DISdown掉可以尽快选一个)。

Holdtime:

默认是hello包的3倍,(OSPF是4倍)也就是30秒收不到hello就要中断邻接。

ISIS点到点邻接:

点到点邻接是通过ES-IS协议接收的ISH报文来完成初始化,接下来开始交换点到点IIH报文。

ISIS点到点邻接采用三步握手机制。

当路由器收到ISP包后,路由器先检查与发送者的邻接状态,如果没有邻接,接收端路由器创建邻接关系并设置为初始化状态,接着路由器发送IIH报文回应,知道路由器从这一新邻居收到的下一个IIH包才建立邻接关系。

在这个过程中,本地路由器不能决定它发送的hello包是否已达到对方,有可能造成一端为up,一端为down,为了解决这个问题,引入TLV240形成三步握手机制,这样本地路由器发送的IIH报文到达对方,对方在发送类型240的hello包,包含邻居系统ID等字段,这样就可确认本地的hello到达对方了,形成可靠邻接。

默认情况下IIH被填充到出口的MTU大小,路由器对比收到IIH和本地的MTU大小,确保形成邻接前能处理邻接点最大的MTU。

路由器的区域地址数目必须与邻居一致,默认cisco路由器最多支持3个区域地址,最新的IOS可以设置为255,邻接路由器支持的最多区域地址数目的不一致将导致IIH丢弃。

ISIS目前仅支持纯文本的明文密码,点到点连接的交换lsp的时候都是用单播的地址,也就是对方的2层链路地址(localciruitID)。

L1:

0010.0000.0001

L1:

0010.0000.0002

ISIS广播链路邻接:

上图是在广播链路上形成邻接的过程:

1、RTA在接口启用isis,开始使用组播地址发送hello报文,此时RTA没有发现任何邻居,所以邻居字段为空。

LAN层2的广播地址:

01-80-c2-00-00-15(所有L2IS)

LAN层1的广播地址

01-80-c2-00-00-14(所有L1IS)

2、RTB收到RTA发送的Hello报文后,为RTA创建一个邻居数据结构,并且将邻居的状态设置为init,RTB发送一个hello报文给RTA,并且在将RTA的MAC地址包含在报文的邻居字段中,表明RTB已经收到来自RTA的hello报文。

3、RTA接收到RTB的hello后,同样为RTB创建一个邻居数据结构,并且将邻居的状态设置为init,RTA再发送一个hello包给RTB,并且将RTB的MAC地址包含在报文的邻居字段中,表明RTA已经收到来自RTB的hello报文。

4、当RTB再次接收到RTA发送的Hello报文后,检查本地已有的RTA的邻居数据结构了,表明之前已经收到来自邻居的hello报文,同时检测到所接收到的邻居报文的邻居字段中有本地路由器的MAC地址,表明对端已经接收到本端的Hello报文,经过双方的检测后将邻居状态设为UP,下一步双方开始发送各自的链路状态数据库。

5、双方建立邻居关系后,DIS也同时选举出来(发送2个Hello报文后),双方开始向对端发送本地的链路状态报文(LSP)。

为了保证同步和减少报文流量,每个路由器并不与广播网上每一台路由器同步数据库,而是只与DIS同步。

6、当DIS选举出来并且经过交换LSP报文后,DIS将发送CSNP报文,该报文只包括本地数据库中LSP摘要信息(并不包含实际LSP),每一条摘要信息用LSPID标识一条LSP。

7、当接收到CSNP报文后,将和本地数据库中的LSP对比,如果有缺少的那么将用PSNP向DIS请求,如果本地有更多的LSP,则直接发送该LSP给DIS。

8、当DIS接收到PSNP后,发送该PSNP请求的LSP来同步数据库。

经过一定时间后,整个网络的LSDB完全同步,网络处于稳定状态,只定时发送hello报文。

3.3.2ISIS链路数据库

存储在ISIS链路状态数据库中的信息元素叫做链路状态数据包,就是LSP。

LSP包含了由ISIS路由器产生的描述其周围环境的路由信息。

Lsp头主要包含:

●区域信息

●邻接路由器

●IP子网

●度量信息

●认证信息

区域内路由器交换lsp的进程叫做扩散(flooding)区域内所有路由器都接收区域内lsp并将它们汇聚起来。

ISIS的LSP数据格式:

层1和层2各自封装了ISIS不同层次的路由信息,但它们的数据包格式相同。

层1和层2的ISIS数据包都有一个包头到pdu长度字段前8个字节是相同的,后面是tlv字段。

在pdu和tlv之间有几个字段比较重要:

剩余生存时间字段:

lsp到期前的生存时间。

区域关联位:

第4-7位,表示改lsp与带有如下可用度量的另一个区域的关联关系,第4位默认,第五位延迟,第六位开销,第七位误差。

超载位:

第3位,如果此位设置表示路由器超载,不能转发数据。

中间系统类型:

第1,2位,表示路由器的类型是层1还是层2。

区域关联位+超载位+中间系统类型+区域修复字段=1个字节。

LSP的剩余生存时间:

LSP剩余生存时间有2个重要的值,一个是最大生存时间,一个是刷新间隔;

最大生存时间ISO10589指定值为20分钟(1200秒),而且是从1200一直倒数到0。

当lsp的间隔到达刷新间隔的时候,该lsp就会被源路由器重新生成,否则直到生存时间为0就会被清除掉。

刷新间隔被定义为15分钟(900秒),

如果lsp到生存时间都没有刷新包到来,那么这个包的生存时间到0以后,那么IS将出去LSP内容,只保留LSPHeader将Lifetime置0洪泛出去,所有收到为0的lsp路由器在60秒后将从库中清除此lsp;这叫做零寿命生存时间,在cisco中不可配置此参数。

收到新的LSP则重置生存时间。

在OSPF中只有LSA的生成者来清除LSA而ISIS是谁最早发现谁就发起清除。

链路状态数据包标识符:

●LSPID由几部分组成:

●系统标识符(SysID)

●伪节点标识符(PSNID)

●LSP编号(LSPnumber)

一个伪节点的链路状态数据包与一个多路访问的链路有关,并且由该链路DIS产生。

路由器产生的常规LSP的PSNID地段是0,伪节点为非0值。

LSP编号用于指示LSP片断,第一段的编号为0,如果一条较大的lsp的某一段在传输中丢失,那么接收端路由器就会丢弃其他段,整个lsp重传。

所有的路由信息都被捆绑进一个lsp中,该lsp可以根据需要分成多个片断。

单个lsp的最大长度是1492字节(还有8个字节isis包头)。

链路状态数据包序列号:

lsp序列号共4个字节,最大为2的32次方减1等于4,294,967,295,最小lsp再生间隔为30秒,那么4个字节的序列号最大可以用4085.77年。

序列号可以通过周期性的更新(增加序列号)用来保持LSP都是最新的而且是正确的。

链路状态包校验和:

如果路由器收到一条坏的lsp,那么路由器将此lsp清除,并且向网络发送一条那个lsp的新条目,序列号比坏的那个要大,其他路由器收到后也清除坏的lsp。

如果lsp被连续破坏,那么路由器会不断的清除,这样会引起lsp破坏风暴,严重影响网络活动,甚至网络崩溃。

LSP包其他信息:

总共1个字节

P(区域修复)字段:

1个bit位。

ATT(区域关联):

占4bit,由层1-2路由器产生,层1-2路由器通过设置该位可向层1区域表明自己与主干相连,也就是可向区域内发一条默认路由。

如果L1发现有多个L1-2路由有默认路由,那么将选择一个离自己最近的一个。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1