《笔记》关于网络运维那些事---(IS-IS路由协议)

IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是一种链路状态路由协议,在服务提供商网络中被广泛应用。

ISO(International Organization for Standardization,国际标准化组织)

IS(Intermediate System,中间系统):指的是OSI中的路由器。

IS-IS(Intermediate System to Intermediate System,中间系统到中间系统):用于在IS之间实现动态路由信息交互的协议。

CLNP(Connection-Less Network Protocol,无连接网络协议):这是OSI的无连接网络协议,它与TCP/IP中的IP协议的功能类似。

LSP(Link-State Packet,链路状态报文):这是IS-IS用于描述链路状态信息的关键数据,类似OSPF的LSA。IS将网络中的LSP搜集后装载到自己的LSDB中,然后基于这些LSP进行路由计算。LSP分为两种:Level-1 LSP和Level-2 LSP。

度量值:IS-IS使用Cost作为路由度量值,Cost值越小,则路径越优。IS-IS接口的Cost在缺省情况下并不与接口的带宽相关(可手动配置接口自动计算Cost功能,也可手动指定Cost值),无论该接口带宽如何,缺省时其值为10。缺省时,IS-IS Cost类型为Narrow(窄),此时,其接口Cost的长度为6bit,取值范围为1~63;路由Cost的长度为10bit,取值范围为1~1023。可人为修改IS-IS Cost类型为Wide(宽),此时,其接口Cost长度为24bit。IS-IS路由器只能接收和发送Cost类型为同种类型的路由,所以需确保IS-IS域内所有的路由器配置一致的IS-IS Cost类型。


OSI地址:

在TCP/IP协议栈中,IP地址用于标识网络中的设备,从而实现网络层寻址。

在OSI协议栈中,NSAP(Network Service Access Point,网路服务接入点)被视为CLNP地址,它是一种在OSI协议栈中定位资源的地址。

IP协议只用于标识设备,而并不标识该设备的上层协议类型或服务类型,而NSAP地址中除了包含用于标识设备的地址信息,还包含用于标识上层协议类型或服务类型的内容,因此,OSI中的NSAP地址类似于TCP/IP中的IP地址与TCP或UDP端口号的组合。

一个NSAP地址由IDP(Initial Domain Part,初始域部分)和DSP(Domain Sepcific Part,域指定部分)两部分构成,而IDP及DSP这两部分又可以进一步划分。IDP:包含“AFI”“IDI”。DSP:包含“DSP高位部分”“系统ID”“NSEL”。

AFI(Authority and Format Identifier,授权组织和格式标识符):长度为1byte,用于标识地址分配机构。

IDI(Initial Domain Identifier,初始域标识符):该字段用于标识域,其长度是可变的。

DSP高位部分(High Order DSP):也就是DSP中的高比特位部分,其长度是可变的,它用于在一个域中进一步划分区域。

系统ID(System Identification):用于在一个区域内标识某台设备。在华为设备中,长度固定为6byte,通常采用16进制格式呈现。在网络部署过程中,必须保证域内设备的系统ID的唯一性。

NSEL(NSAP-Selector):长度为1byte,用于标识上层协议类型或服务类型。

NSAP的IDP及DSP高位部分加在一起被称为区域地址,地址长度是可变的。对于IS-IS而言,区域地址就是区域ID(Area Identification,区域标识符)。

NET(Network Entity Title,网络实体名称)是另外一种非常重要的地址,NET用于在网络层表示一台设备,可以简单看做NSEL为0x00的NSAP(即不标识任何上层协议或服务类型的NSAP)。在IS-IS中,系统ID相当于OSPF中的Router-ID。

NSAP地址结构:       AFI       +         IDI         +        DSP高位部分      +      系统ID      +      NSEL


IS-IS层次化设计

对于IS-IS来说,其骨干网络并不像OSPF那样是一个唯一的、具体的区域,而是由一系列的Level-2及Level-1-2路由器所构成的范围。

对于IS-IS来说,两个区域的交界处并不在设备上,而是在链路上。

Level-1-2路由器作为Level-1区域与骨干网络之间的桥梁,将其通过Level-1区域内泛洪Level-1 


IS-IS路由器分类:包含“Level-1 路由器”“Level-2 路由器”“Level-1-2 路由器”

Level-1 路由器:是一种区域内部路由器,它只能与同属于一个区域的其他Level-1 路由器或同属于一个区域的Level-1-2 路由器建立IS-IS邻居关系,我们将这种邻居关系称为Level-1邻居关系。Level-1路由器无法与Level-2路由器形成邻居关系。Level-1路由器只维护Level-1的LSDB,它能够根据LSDB中所包含的链路状态信息计算出区域内的网络拓扑及到达区域内各网段的最优路由。Level路由器必须通过Level-1-2路由器接入IS-IS骨干网络从而访问其他区域。

Level-2路由器:Level-2路由器只能与Level-2路由器或Level-1-2路由器建立邻居关系,我们将这种邻居关系称为Level-2邻居关系。Level-2路由器只维护Level-2的LSDB。在一个典型的IS-IS网络中,Level-2路由器通常拥有整个IS-IS域的所有路由信息。

Level-1-2路由器:Level-1-2路由器是同时为Level-1和Level-2级别的路由器。与OSPF中的ABR非常相似,同时维护Level-1和Level-2的LSDB分别用于计算Level-1路由和Level-2路由。


IS-IS的三张表:包含“邻居表”“LSDB”“IS-IS路由表”

邻居表:与OSPF邻居表类似。

LSDB:保存LSP信息的表,LSP采用LSP ID(Link-State Packet ID,链路状态标识)进行标识,LSP ID由“6byte的系统ID”“1byte的伪节点”“1byte的分片号”三部分组成。

系统ID:产生该LSP的IS-IS路由器的系统ID。

伪节点:对于普通的LSP,该字段为0。对于伪节点LSP,该字段为非0。

分片号:如果一个LSP过大,导致始发设备需要对其分片,那么该设备通过为每一个LSP分片设置不同的分片号来对它们进行标识区分。同一个LSP的不同分片必须拥有相同的系统ID和伪节点ID。

IS-IS路由表:每台IS-IS设备基于自己的LSDB进行相应的算法,计算出最优路由,存放于该表中。


协议报文:包含“IIH”“LSP”“CSNP”“PSNP”

IS-IS协议报文直接采用路由链路层封装。

IIH(IS-IS Hello):用于建立及维护IS-IS的邻居关系。包含“Level-1 LAN IIH”“Level-2 LAN IIH”P2P IIH”。

LSP(Link-State Packet):用于承载链路状态信息,类似于OSPF的LSA。只不过LSA并非以独立报文形式存在,必须使用LSU报文来承载,而LSP是一种独立的PDU。

CSNP(Complete Sequence Number PDU,完全序列号报文):设备中发送的CSNP包含该设备LSDB中所有的LSP摘要。主要用于确保LSDB同步。

PSNP(Partial Sequence Number PDU,部分序列号报文):该报文只包含部分LSP的信息摘要。主要用于请求LSP更新。

TLV(Type-Length-Value,类型-长度-值):包含在IS-IS PDU中,类似于OSPF中Type-1 LSA的“链路类型”“链路ID”“链路数据”。

LSP:包含“PDU长度”“剩余生存时间”“LSP标识符”“序列号”“校验和”“P”“ATT”“OL”“IS类型”字段。

PDU长度(PDU Length):指示该PDU的总长度。

剩余生存时间(Remaining Lifetime):指示该LSP的剩余存活时间。

LSP标识符(LSP ID):由“系统ID”“伪节点ID”“分片号”三部分组成。

序列号(Sequence Number):该LSP的序列号,主要用于区分LSP新旧。

校验和(Checksum):校验和。

P(Partition Repair):如果设备支持区域划分修特性,则其产生的LSP中该比特位将被设置为1。

ATT(Attached bits):即关联位。包含四个比特位,分别对应四种度量值类型。

OL(Overload bit):即过载位,通常情况下,设备产生的LSP中该比特位被设置为0,如果设置为1,则表示该设备已经“过载”,而收到该LSP的其他IS-IS设备在进行路由计算时,只会计算到达该LSP始发设备的直连路由,而不会计算穿越该设备、到达远端目的网络路由。

IS类型(IS Type):用于指示产生该LSP的路由是Level-1还是Level-2。该字段用二进制表示,01为Level-1,11为Level-2。


网络类型:

IS-IS支持两种网络类型:Broadcast(广播)及P2P(Point-to-Point,点对点)。当设备的接口激活IS-IS后,IS-IS会自动根据该接口的数据链路层封装决定该接口的IS-IS网络类型。

Broadcast网络类型:

1.在Broadcast网络中,IS-IS会进行DIS的选举,DIS是一个与OSPF中的DR非常类似的概念。

2.IS-IS在Broadcast类型的接口上使用两种IIH PDU,他们分别是Level-1 LAN IIH和Level-2 LAN IIH。

3.在Broadcast类型的网路中,DIS会周期性地泛洪CSNP,以确保网络中的IS-IS设备拥有一致的LSDB。CSNP中包含该DIS的LSDB中所有LSP的摘要信息。CSNP使用LSP条目TLV来承载这些LSP摘要。同一个Broadcast网络中的其他IS-IS设备收到该CSNP后,将其中包含的LSP摘要与本地LSDB进行对比,如果发现两者一致,则忽略该CSNP;如果发现本地LSDB中缺少了某条或某些LSP,则向DIS发送PSNP来请求这些LSP的完整信息。而后者收到该PSNP后,从该PSNP的LSP条目TLV中解析出被请求的LSP,然后将相应的LSP发送给对方。收到该LSP的一方将该LSP更新到自己的LSDB中,并且无需向LSP发送方进行确认。

P2P网络类型:

1.IS-IS在P2P网络中无需选举DIS。

2.IS-IS在P2P网络中使用P2P IIH发现及维护IS-IS邻居关系。缺省时,Hello报文的发送时间间隔为10S。

3.在P2P网络中,当IS-IS设备之间完成邻居关系建立后,便开始交互LSP。设备从邻居收到LSP后,需使用PSNP进行确认,以便告知对方自己已经收到了该LSP。如果一段时间后,对方没有收到用于确认的PSNP,则它会对LSP进行重传。另外,CSNP只在邻居关系建立完成后,双方进行一次交互,此后不会周期性地发送。



DIS与伪节点:

当IS-IS在Broadcast类型的接口上运行时,它会在该接口所连接的LAN中选举DIS(Designated Intermediate System,指定中间系统)。DIS是一个与OSPF的DR相似的概念,它的主要作用在LAN中虚拟 出一个伪节点(Pseudonodes),并产生伪节点LSP。

伪节点并非一台真是的物理设备,它是DIS所产生的一台虚拟设备。如果IS-IS没有引入伪节点概念,那么接入同一个LAN中的每台IS-IS设备都需要在其泛洪的LSP中描述在该LAN中与自己建立邻居关系的所有其他IS-IS设备,当这些设备数量特别多时,每台设备所产生的LSP的体积势必较大。而引入了伪节点后,设备仅需在其泛洪的LSP中描述自己与伪节点的邻居关系即可,无需再描述自己与其他非伪节点的邻居关系。伪节点LSP用于描述伪节点与LAN中所有设备(包括DIS)的邻居关系,从而区域内的其他IS-IS设备能够根据伪节点LSP计算出该LAN内拓扑。DIS负责产生伪节点LSP。

为了确保LSDB的同步,DIS会在LAN内周期性地泛洪CSNP,LAN中的其他设备收到该CSNP后,会执行一致性检查,以确保本地LSDB与DIS同步。缺省情况下,DIS周期性发送CSNP的时间间隔为10S。

DIS选举:

1.接口DIS优先级最高的设备成为该LAN的DIS。DIS优先级的值越大,则优先级越高。

2.如果DIS优先级相等,则接口MAC地址最大的设备将成为该LAN的DIS。

注意:

1.在一个LAN中部署IS-IS时,接入该LAN的所有路由器均与DIS以及其他非DIS路由器建立邻居关系。DIS设计并没有减少LAN中的邻居关系数量。

2.在一个LAN中,Level-1及Level-2的DIS助理选举,互不干扰。

3.IS-IS没有定义备份DIS,当DIS发生故障时,立即启动新的DIS选举过程。

4.DIS具备可抢占性。


邻居关系的建立过程

假设RA和RB为两台Level-1路由器。同处于一个LAN中。(在Broadcast类型中建立邻居关系)

1.RA在直连接口上周期性发送Level-1 LAN IIH,这些PDU以组播的形式发送,该Level-1 LAN IIH中记录了R1的系统ID,此外还包含多个TLV,其中区域地址TLV记录了R1的区域ID。

2.RB在直连接口上收到了R1发送的Lelel-1 LAN IIH,它会针对PDU中的相关内容进行检查(例如检查对方是否与自己处于相同的区域),检查通过后,RB在IS-IS邻居表中将RA的状态设置为Initial(初始化),并在自己的直连接口发送的Level-1 LAN IIH中增加IS邻居TLV,在该TLV中写入RA的接口的MAC地址,用于告知RA:“我发现你了”。

3.RA收到Level-1 LAN IIH后,在其IS-IS邻居表中将R2的状态设置为UP,然后在自己的接口发送的Level-1 LAN IIH中增加IS邻居TLV,并在该TLV中写入RB的接口的MAC地址。

4.RB收到IIH后,在其IS-IS邻居表中将RA的状态设置为UP。至此,两台路由器的IS-IS邻居关系就建立起来了。

邻居关系建立起来后,RA与RB仍然会周期性交互IIH,LSP的交互及LSDB同步过程也将在邻居关系建立起来之后进行。此外,在邻居关系建立过程中,DIS也会被选举产生。LSDB同步后,DIS会周期性地在该Broadcast网络中泛洪CSNP。

在P2P网络中的邻居关系建立过程(两次握手)

使用两次握手建立IS-IS邻居关系,那么邻居关系的建立过程是不存在确认机制的,只要设备在其接口上收到P2P IIH,并且对PDU中的内容通过检查后,便单方面将该邻居的状态视为UP,这显然是不可靠的,因为即使双方的互联链路存在单通故障,也依然会有一方认为邻居关系已经建立,此时网络就必然会出现问题。

在P2P网络中的邻居关系建立过程(三次握手)

三次握手时IS-IS支持的一种更加可靠的邻居建立方式,设备将在P2P IIH中增加一个特殊的TLV-P2P三向邻接TLV,用于实现三次握手机制。

假设有R1和R2两台路由器通过P2P链路连接。

1.R1开始在接口发送P2P IIH,在该IIH中包含R1的系统ID,区域ID等信息,此外还有一个关键的P2P三向邻接TLV,由于此时R1还没有在该接口上收到任何有效的P2P IIH,也没有发现任何邻居,因此它将该TLV中的邻接状态设置为Down。

2.R2将在其接口上收到R1发送的P2P IIH,它会针对该PDU中的相关内容进行检查,检查通过后,R2将在其IS-IS邻居表中将R1的状态设置为Initial,并在从自己接口发送的P2P IIH的P2P三向邻接TlV中,将邻接状态设置为Initializing(初始化中),并且在该TLV的邻居系统ID字段中写入R1的系统ID。

3.R1收到该IIH后,发现在该PDU中,P2P三向邻接TLV的邻接状态为Initializing,且邻居系统ID字段填写的是自己的系统ID,于是它认为自己与邻居R2完成了二次握手过程。接下来,它在自己发送的P2P IIH的P2P三向邻接TLV中,将邻接状态设置为UP,然后在该TLV的邻居系统ID字段中写入R2的系统ID。

4.R2收到R1的IIH后,在该PDU的P2P三向邻接TLV中发现邻接状态为UP,并且邻居系统ID字段填写的是自己的系统ID,于是它认为自己与邻居R1完成了三次握手过程,便在IS-IS邻居表中,将该邻居的状态设置为UP。接下来,它在自己发送的P2P IIH的P2P三向邻接TLV中,将邻接状态设置为UP,然后在邻居系统ID字段中写入R1的系统ID。

5.R1收到R2的IIH后,也认为自己与对方完成了三次握手,便在IS-IS邻居表中,将该邻居的状态设置为UP。至此,R1与R2的邻居关系就建立起来了。

在华为路由器上,IS-IS在P2P类型的接口上缺省采用三次握手方式建立邻接关系。

邻居关系建立须知

一、建立IS-IS邻居关系的两条设备必须是同一个Level的设备。具体要求如下

1.Level-1路由器只能与相同区域的Level-1或者Level-1-2路由器建立Level-1邻居关系;

2.Level-2路由器可以与Level-2或Level-1-2路由器建立Level-2邻居关系;此时该Level-2路由器可以与邻居路由器在同一区域,也可以在不同区域。

3.Level-1路由器不能与Level-2路由器建立邻居关系。

二、两台直连设备如需建立Level-1邻居关系,则两者的区域ID必须相同。

三、建立IS-IS邻居关系的两台IS-IS设备,直连接口需使用相同的网络类型。



协议特性:

路由渗透

路由汇总

Slient-Interface

接口认证

你可能感兴趣的:(《笔记》关于网络运维那些事---(IS-IS路由协议))