ISIS邻接关系的建立
ISIS的邻居状态机:只有down、init、up三种状态
广播网
- 在广播网络上,使用LAN IIH报文来建立邻接关系。有两种类型的LAN IIH:L1 LAN IIH(组播MAC:01-80-C2-00-00-14)和L2 LAN IIH (组播MAC:01-80-C2-00-00-15) 。
- Level-1路由器通过交互L1 LAN IIH报文来建立邻接关系;Level-2路由器通过交互L2 LAN IIH报文来建立邻接关系;Level-1-2路由器会同时交互L1 LAN IIH报文和L2 LAN IIH报文来建立邻接关系。
以两台L2路由器在广播链路上建立邻居关系为例:
- R1组播发送Level-2 LAN IIH(组播MAC:01-80-C2-00-00-15),此报文中无邻居标识。
- R2收到此报文后,将自己和R1的邻居状态标识为Initial。然后,R2再组播向R1回复Level-2 LAN IIH,此报文中标识R1为R2的邻居(6号TLV,通过R1的接口MAC地址进行标识)。
- R1收到此报文后,将自己与R2的邻居状态标识为Up。然后R1再组播向R2发送一个标识R2为R1邻居的Level-2 LAN IIH。
- R2收到此报文后,将自己与R1的邻居状态标识为Up。这样,两个路由器成功建立了邻居关系。
因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举。Hello报文中包含Priority字段,Priority值最大的将被选举为该广播网的DIS,若优先级相同,接口MAC地址较大的被选举为DIS
报文细节
P2P
在P2P连路上,邻接关系建立不同于广播链路,分为两次握手机制和三次握手机制(默认)
- 两次握手2-way(容易存在单通的风险,即链路两端分别为Up和Down)
只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系 - 三次握手3-way(默认方式)
通过三次发送P2P的Hello PDU最终建立邻居关系,类似广播邻居关系建立
240号TLV包含:邻居状态、接口ID、system-id和自己的接口ID
3-way报文
增加P2P邻接TLV,类型为240,长度为15B,其中电路ID用于标识接口(广播网络使用MAC地址来标识接口),而system-id用于标识节点
ISIS的LSP交互过程
广播网络
LSP交互不需要确认,CSNP和PSNP中是LSP的摘要信息
CSNP报文在广播网络中的作用:确认机制,相当于ACK
PSNP报文在广播网络中的作用:请求(LSR)
- 新加入的路由器R3已经与R2(DIS)、R1建立邻居关系
- R3使用组播地址发送自己的LSP
- R2收到R3的LSP之后,会将R3的LSP内容加入LSDB中,并等待CSNP报文定时器超时(10s)并发送CSNP报文,进行该网络的LSDB同步
- R3收到DIS发来的CSNP后,对比自己的LSDB,然后向R2发送PSNP用来请求自己没有的LSP
如果R3发现CSNP中缺少自己的LSP的内容,即DIS没有收到自己的LSP,R3会再次组播发送自己的LSP(通过该机制保证广播网中LSP的可靠性)
- R2收到R3发来的PSNP之后,将R3请求的LSP用组播方式发送给R3
R3发送PSNP之后如果没有收到LSP,R3会在5秒后重新发送该PSNP
P2P网络
LSP交互需要确认
PSNP报文在P2P网络中的作用:作为ACK应答以确认收到的LSP,用来请求所需的LSP
在P2P链路上,CSNP只会发送一次
理论步骤:
- 建立邻接关系之后首先都发送一个CSNP,通告本地的LSDP摘要信息
- 两端设备接收到CSNP之后和本地LSDB做比较,发送PSNP请求自己缺少的LSP
- 收到对方的PSNP之后回复具体的LSP
- 收到对方发来的LSP之后,需要再回复一个PSNP进行确认
实际抓包过程:第一阶段R1和R2各发一个LSP;第二阶段R1和R2各发送一个PSNP;第三阶段R1发送LSP,R2发送CSNP进行确认
ISIS的SSN和SRM标志
SSN/SRM标志在发送、接收LSP的接口下配置,只具有本地意义,用于LSP完整性、可靠性保证,虽然两种网络中都存在,但是只有在P2P网络中才有意义
。
P2P
SSN标志:用于P2P链路接收方,在收到一个LSP时设置,在完成PSNP确认时清除(即发送了用于确认该LSP的PSNP后删除
)
SRM标志:用于P2P链路发送方,在发送一个LSP时设置,在收到其PSNP确认时清除
广播
SSN标志:用于broadcast链路数据库同步过程中,请求完整的LSP。
SRM标志:用于broadcast链路发送方,在发送一个LSP时设置,但在LSP传送出去后被立即清除,因为broadcast链路不需要PSNP确认。
路由渗透(路由泄漏)
简而言之,路由渗透解决非骨干区域访问骨干区域时,因为不知道明细路由而导致的次优路径问题
Level-1的路由通过Level-1-2传递进Level-2,但是Level-2的路由并不会传递进Level-1。因此,Level-1-2和Level-2路由器知道整个IS-IS路由域的路由信息。但是,为了有效减小路由表的规模,在缺省情况下,Level-1-2路由器并不将自己知道的其他Level-1区域以及骨干区域的路由信息通报给它所在的Level-1区域。这样,Level-1路由器将不了解本区域以外的路由信息,可能导致与本区域之外的目的地址通信时无法选择最佳的路由。
关联ISIS选路原则
未配置ISIS的路由渗透之前:
R1不知道本区域外部的任何路由,那么发往区域外的报文会选择最近的Level-1-2路由器(即R3)产生的默认路由发送出去,所以R1会选择次优路径(R1--R3--R5--R6),但是流量返回的路径是R6--R5--R4--R2--R1,同时还造成往返路径不一致,如果存在防火墙,会导致流量不通的问题
产生ATT置位的LSP(Level-1的默认路由)的条件
ISIS中的ABR(Level-1-2)生成默认路由(ATT=1)的条件:一边为Level-1,另外一边为Level-2
- 设备运行级别为Level-1-2
- 在Level-2的区域中有一个活动的邻接关系
- Level-2的区域ID不能和Level-1的区域ID相同
即Level-1-2设备的区域ID和Level-1相同,和Level-2不同
关于第3点的理解:
区域的“不同”的准确含义是“包含”,即level-1-2设备的area如果包含了level-2邻居的area那么不置位,不包含则置位(默认可以配置3个NET地址,即3个area)
通俗的理解:level-1-2设备认为level-1可以通过level-2到达更多区域才会将ATT置位,其中area信息通过报文中tlv0交互
路由泄漏之后防环
level-1-2的路由器在向level-1泄露路由时,这些level-2的LSP会将UP/DOWN置位,当这些泄露的路由再次想传入level-2时,level-1-2的路由器不会再向level-2的路由器传这些泄露的LSP。
三个重要比特位:
P(PRTtition):分区位。仅与Level-2的LSP有关(即只在Level-2区域才会被置位),表示路由器是否支持自动修复区域分割。(用于虚链路,但是目前并没有用过)
ATT(Attach):连接位。由Level-1-2路由器产生,但仅与Level-1的LSP有关(即只在Level-1区域才会被置位,使Level-1路由器产生指向Level-1-2路由器的默认路由),表示产生此LSP的路由器(Level-1-2路由器)与多个区域相连接。
OL(Overload):过载标志位。表示本路由器因内存不足而导致LSDB不完整。其它路由器在得知这一信息后,就不会再利用这台路由器转发需要经过它传送的数据流,但到此路由器直连地址的报文仍然可以被转发(一般用于承载BGP的核心ISIS,即isis over bgp)
利用OL过载位的场景
- R5、R6之间建立EBGP邻居关系,R6与R3、R2、R4之间通过lo0分别建立IBGP邻居关系,lo0互通是通过isis协议。R2的lo0访问R5的lo0,下一跳选择R3,因为R3的cost更小。
- 假设R3和R6之间的链路断开,则R3不再通告R6的路由条目,R2会将下一跳切换到R4。
- 如果此时R3与R6之间的链路恢复,isis邻居已经建立,但是IBGP邻居还未建立(IBGP邻居建立依赖于IGP),此时R3会向R2通告R6的路由。如果R2此时切换到R3,R3与R6之间的IBGP邻居还未建立,可能造成丢包。为了避免这种场景,需要用到isis over bgp,即R3再通告LSP时,首先会查看BGP邻居状态,如果BGP邻居未建立,则将该LSP的OL位置位,那么R2收到此OL位置位的LSP,则进行SPF计算时不考虑此条LSP。
ISIS选路原则
Level-1>Level-2>leaked(注意内部优先级)
- Level-1:先查看是否和目标在同一区域,若在通过Level -1路由访问,若不在则使用缺省默认路由通过最近的Level-1-2路由器访问
- Level-2路由器访问某个目标时,直接通过Level-2数据库访问
- Level-1-2路由器访问目标时,先查看是否和目标在同一区域,若在同一区域通过Level-1路由访问,若不在同一区域通过Level-2数据库访问
ISIS收敛特性
和OSPF收敛特性基本相同,但是RPC对ISIS的支持优于对OSPF的支持,因为ISIS的路由均是通过TLV进行传递的,但是OSPF传递路由的有1、3、5、7类LSA,RPC不支持1类LSA
- 快速收敛
- 增量最短路径优先算法ISPF:只对受影响的节点进行路由计算,仅第一次计算全部节点
- 部分路由计算PRC:PRC的原理和ISPF相同,都是只对发生变化的路由进行重新计算。
- 智能定时器
- LSP快速扩散:接口上发送LSP报文的最小间隔为50毫秒,每次发送LSP报文的最大数目是10
LSP默认发送间隔为900秒,老化时间(剩余老化时间)为1200秒,如果LSP剩余时间变为0,还需要在等待60S(零老化时间)才会从LSDB中删除。ospf和isis均不能删除不是自身产生的路由,即不能删除不是自己产生的LSA或者LSP。但是isis如果收到的lsp是有问题的,是可以删除的,删除时间为1260秒,这点和ospf不同
- 按优先级收敛
度量值
1. Narrow模式
设备默认模式开销都是10,手工配置接口开销取值范围为1-63
- 2号TLV(IS Neighbors TLV),IS可达性TLV,用来携带邻居信息,通告节点
- 128号TLV(IP Internal Reachability TLV),IP内部可达性TLV,用来携带路由域内的IS-IS路由信息,通告内部路由
- 130号TLV(IP External Reachability TLV),IP外部可达性TLV,用来携带路由域外的IS-IS路由信息,通告外部路由
4种度量值
每个度量1个字节,经常用的是默认度量,而延迟度量、开销度量、差错度量主要用在QOS路由选择中
- 默认度量:跟接口带宽成反比,参考带宽/带宽=cost (默认情况下,所有路由器都必须支持这个默认度量)
- 7bit:up/downup为1,用于防环
Level-1-2的路由器不会将来自Level-2的路由发布进Level-1。如果将Level-2的路由泄漏进Level-1,那么up/down会置1,up/down置位的Level-1的LSP不会再被通告进Level-2
- 6bit:内部度量/外部度量外部度量为1 (默认是内部度量)
- 5bit~0bit(6bit) :用于表示度量值, 即最大为为63。接口下配置的最大度量值为63,转发路径上累加度量值不能超过1024,否则不参与计算
- 7bit:up/downup为1,用于防环
- 延迟度量:用来表示链路传输的延迟
- 开销度量:用来表示链路传输的开销
- 差错度量:用来表示链路传输的错误
2. Wide模式
设备默认开销模式都是10,手工配置接口开销取值范围为1-16777215
OSPF与ISIS协议都被扩展以便携带MPLS TE接口参数,对于ISIS协议来说,使用以下两种新的TLV:
- 22号TLV(IS Extended Neighbors TLV),扩展IS可达性TLV,用来携带邻居信息
- 135号TLV(Extended IP Reachability TLV),扩展IP可达性TLV,用来替换原有的IP reachability TLV,携带ISIS路由信息,它扩展了路由开销值的范围,并可以携带sub TLV
使用宽度量的场景:
- 最大63的度量值已经不能满足要求
- 配置需要支持IPv6
- 外部路由需要携带tag(管理标记),tag也是包含在度量值中的
管理标记:管理标记特性允许在IS-IS域中通过管理标记对IP地址前缀进行控制,可以简化管理。其用途包括控制不同级别和不同区域间的路由引入,以及在同一路由器上运行的IS-IS多实例
auto-cost
华为独有的计算cost值的方式,根据带宽自动计算接口开销,参数compatible表示使能根据带宽自动计算接口开销的兼容模式
如果在接口和isis进行下都没有配置开销值,则此接口的开销由系统自动计算
- 当开销类型为wide或wide-compatible时:
接口的开销值= (参考带宽/接口带宽值)×10
配置auto-cost enable compatible
命令后:接口的开销值= 参考带宽/接口带宽值
- 当开销类型为narrow、narrow-compatible或compatible时,不同带宽开销值如下:10M以内60,100M以内50,155M以内40,622M以内30,2.5G以内20,大于2.5G为10
ISIS认证
分类
- 接口认证
对Level-1和Level-2的Hello报文进行认证
针对Hello报文做的认证,会影响ISIS邻居,也会影响路由
有以下两种设置- 发送带认证TLV的认证报文,本地对收到的报文也进行认证检查
- 发送带认证TLV的认证报文,但是本地对收到的报文不进行认证检查
- 区域认证
对Level-1的SNP和LSP报文进行认证
针对Level-1的SNP和LSP做的认证,不会影响ISIS邻居,但是会影响Level-1的LSDB的同步,仅影响Level-1的路由,不会影响Level-2的路由
- 路由域认证
对Level-2的SNP和LSP报文进行认证
针对Level-2的LSP和SNP的认证,不会影响ISIS邻居,但是会影响Level-2的LSDB的同步,仅影响Level-2的路由,不影响Level-1的路由
可以设置为SNP和LSP分开认证:- 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查
- 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查
- 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查
- 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查
报文认证方式
- 明文认证
- MD5认证
- Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性
认证信息的携带形式
ISIS通过TLV的形式携带认证信息,认证TLV的类型为10,具体格式如下:
- Type:ISO定义认证报文的类型值为10,长度为1字节
- Length:指定认证TLV值的长度,长度1字节
- Value:指定认证的具体内容,其中包括了认证的类型和认证的密码,长度为1~254字节,其中认证的类型为1字节,具体定义如下:
- 0:保留的类型
- 1:明文认证
- 54:MD5认证
- 255:路由域私有认证方式
LSP
ISIS的LSDB更新过程
- DIS接收到LSP,在数据库中搜索对应的记录,若没有该LSP,则将其加入数据库,并广播新数据库内容
- 序列号越大越优:若收到的LSP序列号大于本地LSP的序列号,就替换为新报文,并广播新数据库内容;若收到的LSP序列号小本地LSP的序列号,就向入接口发送本地LSP报文
- RemainingLifetime剩余生存时间越小越优:若两个序列号相等,则比较RemainingLifetime。若收到的LSP的RemainingLifetime小于本地LSP的Remaining Lifetime,就替换为新报文,并广播新数据库内容;若收到的LSP的Remaining Lifetime大于本地LSP的Remaining Lifetime,就向入端接口发送本地LSP报文。
- Checksum越大越优:若两个序列号和RemainingLifetime都相等,则比较Checksum。若收到的LSP的Checksum大于本地LSP的Checksum,就替换为新报文,并广播新数据库内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口发送本地LSP报文。
- 若两个序列号、Remaining Lifetime和Checksum都相等,则不转发该报文
LSP产生的原因
- 邻居Up或Down
- ISIS相关接口Up或Down
- 引入的IP路由发生变化
- 区域间的IP路由发生变化
- 接口被赋了新的metric值
- 周期性更新
收到邻居新的LSP的处理过程
- 将接收的新的LSP合入到自己的LSDB数据库中,并标记为flooding
- 发送新的LSP到除了收到该LSP的接口之外的接口
- 邻居再扩散到其他邻居
LSP ID
LSP分片
当ISIS要发布的链路状态协议数据报文PDU中的信息量太大时,IS-S路由器将会生成多个LSP分片,用来携带更多的ISIS信息
ISIS LSP分片由LSP ID中的LSP Number字段进行标识,这个字段的长度是1字节。因此,一个IS-IS进程最多可产生256个LSP分片(最多携带路由3万左右),携带的信息量有限。IS-IS可以配置虚拟的SystemID (最多可配置50个,即isis进程最多可生成51*256个LSP分片),并生成虚拟IS-IS的LSP报文来携带路由等信息。
为什么需要分片?因为isis不是通过IP承载的,是通过链路层承载的,链路层本身不具备分片的能力,只能依靠isis自身实现
如果LSP分片之后,没有收到分片序列号为0的LSP,那么后续的LSP将全部丢弃,因为00分片中包含该LSP的头部信息
工作模式
- Mode-1
用于网络中的部分路由器不支持LSP分片扩展特性的情况
RouterB是不支持分片扩展的路由器,RouterA1和RouterA2是RouterA的虚拟系统,RouterB认为对端有三台独立的路由器,并进行正常的路由计算。同时RouterA到RouterA1和RouterA2的开销都是0 - Mode-2
用于网络中所有路由器都支持LSP分片扩展特性的情况
RouterB通过IS Alias ID TLV24号TLV,用来表示初始系统与虚拟系统的关系知道他们的初始系统是RouterA,则把RouterA1,RouterA2所发布的信息都视为RouterA的信息
路由算法
设备默认接口开销值都是10
SPF计算过程
- 单区域LSDB同步完成
- 生成全网拓扑结构图
- 以本节点为根生成最短路径树
- 默认跨越每个节点的开销一样
ISIS的计算特点
- 在本区域收到的LSP更新,如果是部分拓扑的变化执行的SSPF内路由器第一次启动的时候执行的是Full-SPF算法
- 如果只是路由信息的变法,执行的是PRC算法
- 由于采用拓扑与网络分离的算法,路由收敛速度得到了加强
路由聚合
summary ip-address mask [ avoid-feedback | generate_null0_route | tag tag-value | [ level-1 | level-2 | level-1-2 ] ]
- avoid-feedback
避免从另外一个level学到自己发布的聚合路由。
如果另外一个level中有与summary地址相同的学习路由,则认为该路由是其他路由器学到了本地路由器发布的summary路由后,渗透到另外一个level并发布的。此时avoid-feedback产生作用,该路由变为inactive,从RM路由表中删除。 - generate_null0_route
指定生成Null 0路由,以防止路由循环。 - tag
指定发布路由的管理标签号 - level-1、level-2、level-1-2
对指定区域的路由进行聚合。如果配置时没有指定Level,缺省为Level-2
补充
ISIS地址结构
NSAP
NSAP是OSI协议中用于定位资源的地址,相当于OSI的网络层协议CLNP的地址(类似IP地址的概念)
由IDP和DSP组成,IDP和DSP的长度都是可变的,NSAP总长度最多是20字节,最少是8字节
- IDP相当于IP地址中的主网络号,是由ISO规定的,由AFI的IDI两部分组成
- AFI表示地址分配机构和地址格式(长度固定为1B)
- IDI用来标识域
- DSP相当于IP地址中的子网号和主机地址,由HighOrderDSP、SystemID、SEL三部分
- HighOrderDSP用来分割区域
- SystemID用来区分区域
- SEL用来指示服务类型
AreaAddress(AreaID)由IDP和DSP中的HighOrderDSP组成,既能够标识路由域,也能够标识路由域中的区域,它们一起被称为区域地址,类似OSPF中的区域编号AreaID,同一Level1区域内的所有路由器必须具有相同的区域地址,Level2区域内的路由器可以具有不同的区域地址
- SystemID用来在区域内唯一标识主机或路由器,在设备的实现中,它的长度固定为48bit(6字节),一般情况先,使用设备的RouterID转换为SystemID
- SEL的作用类似于IP中的“协议标识符”,不同的传输协议对应不同的SEL,在IP上SEL均为00,长度固定为1B(8bit)
NET
NET是一类特殊的NSAP(SEL=00)
,在路由器上配置ISIS时,只需要考虑NET即可
- 网络实体名称NET指的是设备本身的网络层的意思,可以看做是一类特殊的NSAP(SEL=00),NET的长度与NSAP相同,最多为20字节,最少为8字节,在路由器上配置ISIS时,只需要考虑NET即可,NSAP不必去关注
- 在配置ISIS过程中,NET最多只能配置3个,在配置多个NET时,必须保证他们的SystemID都相同
没有NET地址ISIS无法运行,该地址包含了区域ID和系统ID,而他本质上是一个ISO地址,最后的SEL等同于TCP的端口号,永远等于00
TCP/IP协议栈 | IP协议 | IP地址 | OSPF | AreaID+RouterID |
---|---|---|---|---|
OSI系统 | CLNP协议 | NSAP地址 | ISIS | NET标识符 |
最短长度8B:1B的AFI + 6B的SystemID + 1B的SEL
用ISIS做网络设计需要注意:保证L2路由器连续
关于SystemID
- 一个中间系统(路由器)至少有一个NET,华为设备最多支持3个
- 同一个Area的中间系统必须有相同的AreaID(Level1必须一样,Level2可以不一样)
- 每个中间系统在一个Area中必须有一个唯一的SystemID
- 一个domain中的两个Level2中间系统不能有相同的SystemID
- NSAP至少为8字节,最多为20个字节
- 对于传统IP应用程序而言,1字节定义AFI(标识二进制DSP语法的地址域),最少2字节定义实际区域信息(IDI+HighOrder+DSP),6字节定义系统ID和1字节的NSEL,故NSAP地址最少为10字节
ISIS整体拓扑
将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2(类似ABR,ISIS默认设置)路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连
- 在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域
OSPF基于接口,即一个设备上的多个接口可以属于不同的Area;ISIS基于设备,即一个设备只能属于一个Level
- 在IS-IS中,单个区域没有物理的骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域
- 在IS-IS中,Level-1和Level-2级别的路由器分别采用SPF算法,分别生成最短路径树SPT;在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
ISIS路由器分类
Level-1路由器
- Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系
- Level-1路由器只负责维护Level-1的LSDB,该LSDB包含本区域的路由信息
- 到本区域外的报文转发给最近的Level-1-2路由器
- Level-1路由器必须通过Level-1-2路由器才能连接至其他区域
Level-1区域建立的条件:
- 要求Area号必须一致
- Level-1路由器可以和Level-1、Level-1-2路由器建立Level-1的邻居
Level-2路由器
- Level-2路由器负责区域间的路由,可以和同一或者不同区域的Level-2或Level-1-2路由器形成邻居关系
- Level-2路由器维护一个Level-2的LSDB,该LSDB包含ISIS区域内的所有路由信息
- 所有Level-2级别(即形成Level-2邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信,路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性
Level-2区域建立的条件:
- Area号可以不一致
- Level-2路由器可以和Level-2、Level-1-2路由器建立Level-2的邻居
Level-1-2路由器(默认)
- 同时属于Level-1和Level-2的路由器
- 可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系,也可以和其他区域的Level-2和Level-1-2路由器形成Level-2邻居关系
- Level-1路由器必须通过Level-1-2路由器才能连接至其他区域
- Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由
既有Level-1又有Level-2的情况下,Level-1-2必须和Level-1的AreaID保持一致,否则无法建立邻居,导致无法进行通信
Level-1-2路由器之间建立什么样的邻居?
区域号不同:一个,Level-2区域
区域号相同:两个,Level-1区域和Level-2区域
ISIS术语
- IIH,hello时间10秒,hold时间30秒
- LSP相当于LSU,那么TLV相当于LSA
- ISIS只支持P2P和广播网络,PSNP分为两种报文,一种是请求LSP(类似LSR,可用于p2p和广播),一种是确认LSP(类似LSAck,只用于p2p)
ISIS报文类型
ISIS的9种报文:
其他常见TLV:https://www.cnblogs.com/cyrusxx/p/12615744.html
1. Hello PDU(IIH)(hello报文)
用于邻居发现,协商参数并建立邻居关系,后期充当保活报文。ISIS目前只支持点到点和广播两种网络类型。
在广播网络中,ISIS通过MAC地址来标识邻居(OSPF是通过RID来标识的);在P2P中,是通过系统ID来标识邻居的,通过电路ID来标识自己的哪个接口与对端相连。
广播网中的Level-1 IS-IS使用Level-1 LAN IIH,Level-2 IS-IS使用Level-2 LAN IIH;非广播网络中则使用P2P IIH。
它们的报文格式有所不同。P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID的Local Circuit ID
字段,缺少了表示广播网中DIS的优先级的Priority
字段以及表示DIS和伪节点System ID的LAN ID
字段。
Level-1 LAN IIH
组播MAC:01-80-c2-00-00-14
Level-2 LAN IIH
组播MAC:01-80-c2-00-00-15
P2P IIH
简而言之:将多字节的Priority和LAN ID替换成1字节的Local Circuit ID
非广播网络中则使用P2P IIH,但是其没有表示DIS(虚节点)的相关字段
2. LSP PDU(链路状态报文)
用于交换链路状态信息,相当于OSPF的LSU
Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP
Level-1 LSP和Level-2 LSP具有相同的报文结构
- ATT:区域关联位
当L1区域中的路由设备收到Level-1-2路由设备发送的ATT位被置位的L1 LSP后,它将创建一条指向Level-1-2路由设备的缺省路由。
虽然ATT位同时在L1 LSP和L2 LSP中进行了定义,但是它只会在L1 LSP中被置位,并且只有L1/2路由设备会设置这个字段。 - OL:过载标志位
设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过过载设备的路由时不会被采用,即对设备设置过载位后,其它设备在进行SPF计算时不会使用这台设备做转发,只计算该节点上的直连路由。 - IS Type:生成LSP的IS-IS类型
用来指明是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)
3. SNP PDU(序列号报文)
用于维护LSDB的完整与同步,且为摘要信息
CSNP(全序列号报文)
类似于OSPF的DBD信息,用来同步LSDB,DIS定期泛洪CSNP(10秒)
分为Level-1 CSNP和Level-2 CSNP
- Source ID:发出CSNP报文的设备的System ID
- Start LSP ID:CSNP报文中第一个LSP的ID值
- End LSP ID:CSNP报文中最后一个LSP的ID值
PSNP(部分序列号报文)
在广播网络中,类似于OSPF的LSR;在P2P网络中,类似于OSPF的LSR和LSAck。非DIS设备向DIS发送PSNP,用于请求非DIS设备上缺少的LSDB中的详细路由信息
分为Level-1 PSNP和Level-2 PSNP
ISIS网络类型
ISIS支持的网络类型
- P2P,例如PPP和HDLC
不选举DIS
- 广播
- DIS:指定中间系统,为了在广播网络中实现更高效的数据库同步
- 伪节点:用来模拟广播网络的一个虚拟节点,并非真实的路由设备,用DIS的System ID和一个字节的Circuit ID(非0值)标识。使用伪节点可以简化网络拓扑,使路由设备产生的LSP长度较小。
DIS
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS,Level-1和Level-2的DIS是分别选举的
可以为不同级别的DIS选举设置不同的优先级,优先级为0的路由器也参与DIS的选举,只是具有最小可能成为DIS,且DIS选举支持抢占
同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系,但LSDB的同步仍然依靠DIS来保证
DIS用来创建和更新伪节点,并负责生成伪节点的链路状态协议数据单元LSP,用来描述这个网络上有哪些网络设备
IS-IS中DIS发送Hello时间间隔为10/3秒,而其他非DIS路由器发送Hello间隔为10秒,ISIS的LSP的更新时间为900秒,Hold time时间为1200秒,是从大往小减的
ISIS系统中没有DIS也能完成数据库同步
为什么DIS不需要备份的DIS?
- DIS支持抢占
- DIS发送Hello消息的时间为10/3秒,可以让ISIS快速发现DIS失效,重新选举DIS
- ISIS主要用在运营商网络中,而运营商网络一般很少会更换设备,所以影响不大
为什么在ISIS中DIS可以被抢占?
- 在ISIS中所有的设备都可以建立邻接关系
- ISIS主要用在运营商网络中,而运营商网络一般很少会更换设备,所以影响不大
DIS的选举
- 优先级越大越优,默认优先级为64,取值范围(0-127)
- MAC地址越大越优
追问
影响ISIS邻居建立的条件
建立邻居关系原则:同一层次(级别)、同一区域(只有L1会做严格检查)、同一网段、同一网络类型
1. 运行级别和区域ID
区域ID只影响Level-1邻居的建立,Level-1只能和同一区域的Level-1或Level-1-2建立Level-1级别的邻居
- level1-level2:无法建立
- level1-level1:level1
- level1-level1/2:level1
- level2-level1/2:level2
- levle2-level/2:level2
- level1/2- level1/2:
- 区域号相同level1和level2
- 区域号不同则只有Level2关系
2. System-ID
system-id标识一台路由器,具有唯一性,默认是6个字节,如果system-id长度不一致或者直连设备的system-id冲突则无法建立邻居
3. 认证
接口认证是对Level-1和Level-2的Hello报文的认证,区域认证是对Level-1的SNP和LSP的认证,路由域认证是对Level-2的SNP和LSP的认证,对于区域和路由域的认证可以设置为SNP和LSP分别认证。认证方式分为明文认证、MD5认证和keychian认证。
接口认证不一致影响邻居的建立,区域认证和路由域认证不一致可以正常建立邻居,但是无法正常同步LSDB
4. MTU
ISIS中存在隐式的MTU检测机制,通过IIH报文,P2P为1500,广播网为1497,少的那3字节的原因如下:
ISIS通过802.3承载,3字节用于802.2头部(即LLC,包含DSAP、SSAP和Control三部分),标识上层协议。
广播网络中所有的Hello报文都会使用Padding填充,但是P2P只有在建立邻居时的Hello报文才会被填充,其他的Hello报文不会被填充。
5. 接口的网络类型
P2P和广播网络无法建立邻居,因为这两种网络类型建立邻居所需的TLV不同,P2P的3次握手模式使用240号TLV,而广播网络使用6号TLV。但是可以通过将以太网接口模拟成P2P接口,建立P2P链路邻居关系。
6. IP地址不在同一个网段
默认开启源检查,只影响广播网
ISIS邻居关系的形成与IP地址无关,但在IP网络上运行ISIS协议,要检查设备两端的IP地址。如果设备接口配置了辅用IP地址,那么只要双方有某个IP地址(主用IP地址或者辅用IP地址)在同一网段,就能建立邻居,不要求设备两端的主用IP地址相同。
Hello报文不携带掩码,只携带IP,路由器用收到的IP与本地接口的掩码进行与运算,必须处于同一个网段,如192.168.1.1/24和192.168.1.200/25之间建立邻居,结果.1侧显示对端为init状态,.200侧显示无邻居。
当链路两端ISIS接口的地址不在同一网段时,如果配置接口对接收的Hello报文不作IP地址检查,也可以建立邻居关系。对于P2P接口,可以配置接口忽略IP地址检查;对于以太网接口,需要将以太网接口模拟成P2P接口,才可以配置接口忽略IP地址检查。
7. cost-style
度量值类型不同不影响邻居的建立,但是影响路由的计算。
窄度量和宽度量主要有以下3点区别:
- 窄度量值最大为63,宽度量值最大为2的24次方
- 窄度量不支持TLV的分片,但是宽度量支持
- 用来通告路由信息的TLV类型不同,窄度量的TLV为2号、128号和130号,而宽度量为22号和135号
8. 其他
- max area数量不一致 (默认是3个)
- 多拓扑,即一边只有IPv4,另外一边有IPv4和IPv6
- p2p中3次握手和2次握手无法建立邻居,因为所使用的TLV不同,2次握手使用17号TLV,3次握手使用240号TLV
DR和DIS的区别
- 选举时机的比较。DR是在建立邻居关系之后选举,而DIS是在邻接关系建立后,需要再等待两个Hello报文间隔
- 选举时优选级的比较。DIS的优先级为0也可以参与选举,但DR优先级为0不参与选举;DR先比优先级再比RouteID,而DIS先比优先级再比MAC地址
- 选举的过程需要一定的时间。OSPF选举DR/BDR需要waiting time达40秒,过程也较为复杂,而ISIS选举DIS等待两个Hello报文间隔就可以,简单快捷
- 选举结果。ISIS只有一个DIS,但是OSPF除了有DR,还有一个BDR用做备份
- 选举结束后。后期有新的Router加入到链路进来,如果优先级比DIS高是可抢占的,但是DR是不可抢占的
- 选举完成后。DIS的发送Hello报文时间是3秒,DR是10秒或者30秒。ISIS网络链路内所有的路由器之间都建立的是邻接关系。OSPF中DRothers只与DR/BDR形成邻接关系, DRothers之间只有2-way的关系
- 作用不同。DIS周期性发送CSNP,保证网络中的LSDB同步,而DR的存在主要是为了减少泛洪
ISIS和OSPF的区域的区别
ISIS中Level-2可以学习到Level-1中的路由,但是Level-1无法学习到Level-2的路由。Level-1类似ospf的nssa区域,而Level-2类似ospf的骨干区域,即isis的骨干区域是由连续的level-2的路由器组成的
- ospf区域类型一致才能建立邻居,isis只有在level-1时才要求一致
- ospf区域类型更加丰富,isis只有2种
- 表示形式不一样,ospf使用点分十进制,isis表示方法比较复杂
- 在ospf中,一条链路只能属于一个区域,而在isis中,一条链路可以属于不同的区域
ospf是基于接口的,isis是基于设备的
OSPF和ISIS的异同
相同点
- 维护一个链路状态数据库
- 都利用Hello包形成和维护邻居
- 使用区域概念来构成层次化的拓扑接口
- 都提供在区域之间进行地址汇总的能力
- 无类路由协议
- 都选举一个指定路由器来描述广播性网络
- 认证能力
不同点
差异性 | ISIS | OSPF |
---|---|---|
网络方式 | 少,2种 | 多,5种 |
开销方式 | 复杂 | 简便,参考带宽100M |
区域类型 | 少,2种 | 多 |
路由报文类型 | 简单 | 多样 |
路由收敛速度 | 很快 | 快 |
扩展性 | 强 | 一般 |
路由负载能力 | 超强 | 强 |
1. 基本点比较
- ospf只支持IP,而isis支持IP和CLNP环境
- ospf通过IP承载,协议号89;isis通过链路层承载,安全性相对高些
- ospf基于接口划分区域,区域类型多,区域0为骨干区域;而isis基于设备划分区域
- ospf支持的网络类型有P2P、P2MP、NBMA、广播、虚链路,而isis仅支持广播和P2P
2. 邻接关系比较
- ospf邻接关系只有一种,但是isis邻接关系分level-1和level-2邻接关系
- ospf的DR优先级为0则不参与选举、不支持抢占、有BDR,而isis的DIS优先级为0参与选举DIS、支持抢占、没有备份DIS
- ospf中只有DR other之间是邻居关系,其余均是邻接关系,但是isis网络中所有设备均是邻接关系
3. 链路状态数据库同步过程比较
- ospf的LSA种类多,数据库结构复杂,因此定位故障困难;而isis的LSP只有路由器LSP和伪节点LSP,数据库结构简单,定位故障容易
- ospf的LSA的生存周期从0递增(maxage=3600,refresh周期为1800,不可调),而isis是从最大值递减(maxage=1200,refreshment 周期为900,可调)
4. 路由计算过程比较
- ospf将前缀作为SPF的节点,而isis将前缀作为叶子,叶子发生变化时可以用PRC来更新叶子而不需要进行SPF计算
- ospf的接口开销根据接口带宽变化,而isis的接口开销值在缺省时相同,所有接口默认为10
- ospf在区域内任何路由变化(LSA1/2中路由条目)均会触发iSPF计算,仅3类、5类、7类LSA的变化才使用PRC,而isis任何路由变化都是PRC
5. 性能及扩展能力比较
ospf支持按需链路而isis不支持,但是isis采用TLV结构,扩展性更好
ISIS IPv6
1. IPv6增加了哪两个TLV
- 232号TLV(IPv6 Interface Address):它相当于IPv4中的132号TLV(IP Interface Address),只不过把原来的32比特的IPv4地址改为128比特的IPv6地址
- 236号TLV(IPv6 Reachability):通过定义路由信息前缀、度量值等信息来说明网络的可达性
NLPID是标识网络层协议报文的一个1字节字段,IPv6的NLPID值为0x8E(ipv4是0xCC)。如果isis支持IPv6,那么向外发布IPv6路由时必须携带NLPID值
2. isis多拓扑指是什么
isis多拓扑是指在一个isis自治域内运行多个独立的IP拓扑。例如IPv4拓扑和IPv6拓扑,而不是将它们视为一个集成的单一拓扑。这有利于isis在路由计算中根据实际组网情况来单独考虑IPv4和IPv6网络。根据链路所支持的IP协议类型,不同拓扑运行各自的SPF计算,实现网络的相互屏蔽。
ISIS在帧中继环境下使用什么网络类型
网络类型为P2P,且只能采用2次握手的方式建立邻居,接收LSP,但是并不计算路由(即没有路由条目),可以在HUB上采用子接口的方式解决。
如果采用3次握手,假设R1和R2先建立邻居(有路由条目),那么R3无法与R1建立邻居,因为R1给R3发送的IIH中的SystemID和电路ID并不是R3的,而是R2的。