Level1的优于Level2的路由,优于UD置位的Level1
IS-IS的基本概念
IS-IS概述
IS-IS是一种链路状态路由协议,优先级是15,cost值默认是10。
IS-IS工作在数据链路层,使用组播MAC地址:
- Level1:0180-c200-0014
- Level2:0180-c200-0015
CLNS由以下三个部分组成:
- CLNP:类似于TCP/IP中的IP协议。
- IS-IS:类似于TCP/IP中的OSPF。
- ES-IS:类似于TCP/IP中的ARP,ICMP等。
集成IS-IS特点:
- 支持CLNP网络、IP网络
- 采用数据链路层封装
OSPF特点:
- 只支持IP网络
- 采用IP报文封装
NET
NET(网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID、SEL组成。
System ID一共必须有12个数字,因为是6个字节
区域地址只需要在13个字节数内即可
SEL为00
一个字节=8个二进制数=2个16进制数
IS-IS和OSPF区域划分的区别
IS-IS采用骨干区域和非骨干区域的分层结构:
- Level1路由器部署在非骨干区域。
- Level2路由器和Level-1-2路由器部署在骨干区域。
每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
IS-IS和OSPF的不同点:
- 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域。
- 在IS-IS中,单个区域没有骨干区域和非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域。
- 在IS-IS中,Level1和Level2级别的路由都采用SPF算法,分别生成最短路径树SPT;而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
IS-IS支持的网络类型
广播(Broadcast):如Ethernet。
点到点(P2P):如PPP、HDLC等。
IS-IS开销值
IS-IS接口的cost在缺省情况下并不与接口带宽相关,无论接口带宽多大去,缺省时cost为10。
IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是
- 接口开销:为单个接口设置开销。
- 全局开销:为所有接口设置开销。
- 自动计算开销:根据接口带宽自动计算开销。
开销类型:
narrow 默认,最大取值63
wide 最大取值1677721
配置IS-IS接口开销类型
①narrow:指定IS-IS设备所有接口只能接收和发送开销类型为narrow的路由。
Narrow模式下路由的开销值取值范围为1~63的整数。
②wide:指定IS-IS设备所有接口只能接收和发送开销类型为wide的路由。
wide模式下路由的开销值取值范围为1~16777215的整数。
③wide-compatible:指定IS-IS设备所有接口可以接收开销类型为narrow和wide的路由,
但却只发送开销类型为wide的路由。
④narrow-compatible:指定IS-IS设备所有接口可以接收开销类型为narrow和wide的路由,
但却只发送开销类型为narrow的路由。
⑤compatible:指定IS-IS设备所有接口可以接收和发送开销类型为narrow和wide的路由。
IS-IS报文类型
IS-IS的PDU有4种类型:IIH(IS-IS Hello),LSP(链路状态报文),CSNP(全序列号报文),PSNP(部分序列号报文)。
IIH:用于建立和维持邻接关系。类似于Hello报文。默认10S,DIS3.3秒
LSP:用于交换链路状态信息。Level-1-2则用于传送两种LSP。
SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level1 CSNP、Level2 CSNP,Level1 PSNP和Level2 PSNP。
CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互 CSNP来判断是否需要同步LSDB。
PSNP只包含部分LSP的摘要信息。当发现LSDB不同时,PSNP请求邻居发送新的LSP,P2P使用PSNP对收到的LSP作确认。
共有九种明细报文:Level-1 IIH,Level-2 IIH,P2P IIH;Level-1 LSP,Level-2 LSP;Level-1 CSNP,Level-2 CSNP;Level-1 PSNP,Level-2 PSNP
TLV
TLV的含义是:类型(Type),长度(Length) ,值(Vaule)。实际上是一个数据结构,这个结构包含了这三个字段 。
使用TVL结构构建报文的好处是灵活性和扩展性好。采用TVL使得报文的整体结构固定,增加新特性只需要增加新TVL即可,不需要改变整个报文的整体结构。
IS-IS形成邻居关系的条件
1.同一层次的相邻路由器才有可能成为邻居。
2.对于Level-1路由器来说,必须在同一区域。
3.链路两端IS-IS接口的地址必须同一网段。
4.链路两端IS-IS接口的网络类型相同 ,P2P broadcast。(不同的网络类型发送的报文不一样)
5.接口相同的mtu 值
6.认证相同
7.接口未被设置为silent
8.在 P2P网络中 ,system-id 长度要一致,最大区域地址数要相同
注意以下因素不影响ISIS 邻居的建立:
(1)cost-style 不一致(计算路由会有问题,建立邻居没有问题)
(2)hello 时间不一致
- p2p HelloTimer 10 DeadTimer 30
- 广播dis HelloTimer 3 DeadTimer 10
- 广播非dis HelloTimer 10 DeadTimer 30
IS-IS接口开销类型两端类型不一致,邻居可以建立,但路由不能学习
IS-IS路由器的分类
- Level-1可以和相同区域的Level-1、Level-1-2建立Level-1邻接关系
- Level-2可以和任何一个Level-2、Level-1-2建立Level-2邻接关系
- Level-1-2可以和相同区域的Level-1建立Level-1邻接关系,可以和任何区域的Level-2、Level-1-2形成邻接关系
IS-IS路由器的分类Level-1
Level1路由器是一种IS-IS区域内部路由器。
Level1路由器只维护Level1的LSDB,该LSDB只包含本区域的路由信息。Level-1路由器只能通过Level-1-2路由器访问其他区域。
IS-IS路由器的分类Level-2
Level2路由器是IS-IS骨干路由器,路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息。
所路由域中Level2级别的路由器必须是物理连续的,以保证骨干网的连续性。
IS-IS路由器的分类Level-1-2
Level-1-2路由器与OSPF中ABR非常相似。
Level-1-2路由器维护两个LSDB,Level1的LSDB用于区域内路由,Level2的LSDB用于区域间路由。
在华为设备上配置IS-IS时,缺省时,路由器全局Level为Level-1-2,可以通过命令修改设备的类型。
IS-IS的工作原理
IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它包含了该路由器所有使能IS-IS协议接口的链路状态信息。通过跟相邻设备建立IS-IS邻接关系,互相更新本地设备的LSDB,可以使得LSDB与整个IS-IS网络的其他设备的LSDB实现同步。然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会下发到IP路由表中,并指导报文的转发。
IS-IS邻居关系的建立过程
广播网络中的邻接关系建立过程
不同类型的网络上,IS-IS邻接建立方式并不同。在广播网络中,使用三次握手建立邻接关系。
- 在Down状态下,R1组播发送Level-1 LAN IIH,此报文中邻接列表为空。
- R2收到此报文后,将邻接状态标识为Inital。然后,R2再向R1回复Level-1 LAN IIH,此报文中标识R1为R2的邻接。
- R1收到此报文后,将自己 为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH。
- R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。
- 在广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。
因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔(20秒),再进行DIS的选举。
- P2P链路邻居关系的建立
在P2P链路上,邻居关系的建立不同于广播链路。分为两次握手机制和三次握手机制。
- 两次握手机制
只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系。
- 三次握手机制
此方式通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,类似广播邻居关系的建立。
IS-IS和OSPF关于邻居关系的区别
IS-IS两个邻居路由器只要相互交换HELLO数据包就认为相互形成了邻接关系;而OSPF中,两台路由器进入2-Way状态则认为形成了邻接关系,但是只要进入Full状态才被认为进入完全邻接关系。
IS-IS中,优先级为0的路由器亦然可以参与DIS选举;而OSPF汇总优先级为0表示不参与选举。
IS-IS中,DIS是基于抢占的;OSPF中DR/BDR已经选举不得抢占。
IIH
IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。
Level-1 IIH和Level-2 IIH发的组播地址分别为0180-C200-0014、0180-C200-0015。
Down:邻接关系的初始状态。
Inital:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID。
Up:收到IIH,且邻接列表中包含路由器自身的System ID。
DIS与伪节点
DIS没有备份,且可以抢占,每10秒发CSNP,描述自己的LSDB。
Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。
DIS的选举规则如下:
- DIS优先级数值最大的被选为DIS。范围是0-127,0参与选举
- 如果优先级数值相等,则比较MAC地址最大的路由器会成为DIS。
DIS发送Hello PDU的时间间隔是普通路由器1/3(一般是10,DIS是3.3),这样可以确保DIS出现故障时能够被更快速地发现。
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS。
伪节点:
DIS用来创建和更新伪节点,并负责生成伪节点的链路状态协议数据单元LSP,用来描述这个网络上有哪些网络设备。
伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。
DIS与DR的区别:
- DR选举先看优先级,再比较router-id,DIS先看优先级,再看MAC地址。DR优先级默认为1,取值范围为0-255,DIS默认为64,取值范围为0-127。在IS-IS广播网中,优先级为0的路由器也参与DIS选举,OSPF中优先级为0的路由器不参与DR的选举。
- DR有备份的设备BDR,而DIS没有备份的DIS。
- DR的选举是在链路上选举,DIS选举分别为Level-1和Level-2,在路由器上选举。
- 在IS-IS广播网中,当有新的路由器加入,并符合DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当有一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段的DR。
- 在IS-IS广播网中,同一网段上同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。
链路状态数据库
LSP
相当于OSPF中的LSDB。
LSP包含路由器所有的链路状态信息。LSP的生命周期是1200秒,900秒后会进行刷新
IS-IS链路状态报文LSP用于交换链路状态信息。Level-1-2路由器可以传送Level-1和Level-2的两种LSP。
LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号。
IS-IS的LSDB
伪节点标识:当参数为00,表示不是伪节点,不是DIS。当参数为01时,表示该LSP是伪节点。
0100.0000.1001.00-00*
0100.0000.1001:System-ID
00:伪节点标识
00:分片号
*:自己产生的LSP
分片号:当IS-IS要发布的链路状态协议数据报文PDU中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。分片号用来区分不同的LSP分片。
查看非伪节点的LSP
AREA ADDR:该LSP来源的区域号
INTF ADDR:该LSP中描述的接口地址
NBR ID:该LSP中描述的邻接信息
IP-Internal:该LSP中描述的网段信息
查看伪节点LSP
在伪节点LSP中,只包含邻接信息而不包含路由信息。
CSNP
CSNP 类似于OSPF的DD报文传递的是LSDB里所有链路信息摘要。
CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互CSNP来判断是否需要同步LSDB。
- 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)。
- 在点到点网络上,CSNP只在第一次建立邻接关系时发送。
Source ID:发送CSNP报文的路由器的System ID。
Start LSP:CSNP报文中第一个LSP的ID值。
End LSP ID:CSNP报文中最后一个LSP的ID值。
PSNP
PSNP类似于OSPF的LSR或LSAck报文用于请求和确认部分链路信息。
PSNP只包含部分LSP的摘要信息(与CSNP不同):
- 当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
- 在点到点的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。
Source ID:发出PSNP报文的路由器的System ID。
广播网络中LSP的同步过程
广播网络中新加入路由器与DIS同步LSDB数据库的过程:
- 新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发送组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将收到该LSP。
R3首先发送IIH报文,建立邻接关系。然后把自己的LSP发送出去,使得网络上所有邻接都能收到R3的LSP。
- 该网段中的DIS会把收到R3的LSP加入到自己的LSDB中,并等待CSNP报文定时器超时并发送CSNP报文。
DIS把R3的LSP加入到自己的LSDB中,并发送CSNP报文。
- R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。
R3收到DIS的CSNP报文后,对比自己的LSDB,然后向DIS发送PSNP报文请求LSP。
- DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步。
DIS收到该PSNP报文后向R3发送LSP进行LSDB同步。
点到点网络中LSP的同步过程
点到点网络上LSDB数据库的同步过程:
R1与R2先建立邻接关系。
建立邻接关系之后,R1与R2会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。
假设R2向R1索取相应的LSP
- R1发送R2请求的LSP的同时启动LSP重传定时器,并等待R2发送的PSNP作为收到LSP的确认。
R1发送R2请求的LSP,并启动重传定时器,等待R2发送PSNP作为收到LSP的确认。
- 如果在接口LSP重传定时器超时后,R1没有收到R2发送的PSNP报文作为应答。
如果重传定时器超时,R1还没有收到R2发送的PSNP报文。
- 则R1重新发送该LSP。
那么R1重新再给R2发一遍R2请求的LSP。
- R2收到LSP后,发送PSNP进行确认。
R2收到之后,需要给R1发送PSNP进行确认,这样才同步成功。
LSP的处理机制
IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:
若收到的LSP比本地LSP的更优,或者本地没有收到的LSP:
- 在广播网络中:将其加入数据库,并组播发送新的LSP。
- 在点到点网络中:将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居。
若收到的LSP和本地的LSP无法比较出优劣,则不处理该LSP。
如果收到一个LSP多个实例时:
先比较序列号是否相同,再比较保活时间,最后比较校验和是否相同。
序列号越大越优,保活时间为0s的最优,校验和越大越优。
如果收到的LSP种,这三个都一样,则不处理收到的LSP。
LSP产生的原因,IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:
- 邻接up或down
- IS-IS相关接口up或down
- 引入的IP路由发生变化
- 区域间的IP路由发生变化
- 接口被赋了新的metric值
- 周期性更新(刷新间隔15min)
路由计算
Level-1的路由优于Level-2的路由
比如R4访问R3,会通过Level-1路由器的路由访问,不会通过Level-2的路由器访问。
Level-1路由器的路由计算
Level-1区域到达其他区域的路由,需要Level-1-2设置ATT标志位,下发缺省路由,到达其他区域。
ATT置位产生的条件?
当一台isis路由器满足以下三个条件时,就会产生ATT=1的LSP,在L1区域进行通告:
(1)isis路由器为L1-2路由器
(2)存在L1的isis邻居关系
(3)存在L2的isis邻居关系,并且自身的区域id跟L2邻居的区域id不能一致
Level-1路由器的次优路径的问题
R1去往192.168.20.0/24网段,可以有路径1和路径2两条路走,但是明显路径1的路径更优,但仍然会有两条路径可走,没有选择最优路径,导致了出现次优路径,所以可以使用路由渗透方式引入最优路径。
缺省时,R1只能通过指向R2或R3的默认路由到达区域外部,但是R1距离R2和R3路由器的cost值相等,那么当R1发送数据包到192.168.20.0/24时,就有可能选择路径2,导致出现次优路径。
路由渗透
路由渗透可以解决次优路径问题,选出最优路径。可以在Level-1-2路由器上通过路由引入,把Level-2明细路由引入到Level-1,从而就有了最优路径。
import-route isis level-2 into level-1
缺省情况下,Level-1-2路由器不会将到达其他区域的路由通告本Level-1区域中。
通过路由渗透,可以将区域间路由通过Level-1-2路由器传递到Level-1区域,此时Level-1路由器可以学习到其他区域的详细路由,从而计算出最优路径。
默认情况下,Level-1路由会渗透到Level-2里,Level-2路由不会渗透到Level-1里。
路由渗透可能会造成环路
防环原则:
- Level-1默认可以渗透到Level-2,Level-2默认不可以渗透到Level-1
- 通过命令方式,将Level-2渗透到Level-1,那么会将这条LSP的UD位置位,其他的Level-1-2设备,不能使用UD置位的LSP选路,除非它失去了所有的Level-2邻居
- Level-1-2设备不能使用其他Level-1-2设备产生的ATT置位的LSP进行选路(缺省路由),即使失去了所有Level-2的邻居,也不能使用
Level-1-2路由器的路由计算
Level-1-2路由器可以计算出不同区域的路由,而Level-1-2没有骨干区域的概念,只有路由域的概念,R2-R4,R3-R5是一个路由域,相当于骨干区域。
R2及R3都维护Level-1 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0001的路由器。
R2及R3都维护Level-2 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0002的路由。
R2及R3将到达Area 49.0001的路由以Level-2 LSP的形式发送到Area 49.0002。
Level-2路由器的路由计算
Level-2路由器不需要借助Level-1-2路由器来学习其他区域的路由,Level-2默认就能有R1的路由。
R4及R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由。
IS-IS的基本配置
IS-IS认证
IS-IS认证是基于网络安全性的要求而实现的一种认证手段,通过在ISIS报文中增加认证字段对报文进行认证。当本地路由器接收到远端路由器发送过来的ISIS报文,如果发现认证密码不匹配,则将收到的报文进行丢弃,达到自我保护的目的。
根据报文的种类,认证可以分为以下三类:
- 接口认证:在接口视图下配置,对Level-1和Level-2的Hello报文进行认证。
- 区域认证(只针对Level-1):在IS-IS进程视图下配置,对Level-1的CSNP、PSNP和LSP报文进行认证。
- 路由域认证:在ISIS进程视图下配置,对Level-2的CSNP、PSNP和LSP报文进行认证。
根据报文的认证方式,可以分为以下四类:
- 简单认证:将配置的密码直接加入到报文中,这种加密方式安全性较其他两种方式低。
- MD5认证:通过将配置的密码进行MD5算法加密之后再加入报文中,提高密码的安全性。
- Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性。
- HMAC-SHA256认证:通过将配置的密码进行HMAC-SHA256算法加密之后再加入报文中,提高密码的安全性。
IS-IS认证详解
接口认证:Hello报文使用的认证密码保存在接口下,发送带认证TLV的认证报文,互相连接的路由器接口必须配置相同的口令。
区域认证:区域内的每一台Level-1路由器都必须使用相同的认证模式和具有共同的钥匙串。
路由域认证:
- IS-IS域内的每一台Level-2和Level-1-2类型的路由器都必须使用相同模式的认证,并使用共同的钥匙串。
- 对于区域和路由域认证,可以设置为SNP和LSP分开认证。
- 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查。
- 本地发送的LSP报文携带TLV,对收到LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查。
- 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查。
- 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查。
IS-IS的认证配置