OSPF与ISIS的对比
OSPF与IS-IS在区域划分上的区别
在OSPF中,一个路由器的不同接口可以属于不同区域;在IS-IS中,每个路由器都只属于一个区域
在OSPF中,Area 0被定义为骨干区域,其它区域为非骨干区域;在IS-IS中,单个区域没有骨干与非骨干的概念
在OSPF中,只有同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发;在IS-IS中,Level-1和Level-2级别的路由器都采用SPF算法,分别生成最短路径树
OSPF支持的网络类型与IS-IS支持的网络类型
OSPF支持的网络类型:
- P2P
- NBMA
- Broadcast
- P2MP
IS-IS支持的网络类型:
- P2P
- Broadcast
OSPF中的开销值和IS-IS中的开销值
OSPF中的开销值:
- 每一个激活了OSPF的接口都会维护一个接口的Cost值
- OSPF以"累计Cost"为开销值,也就是流量从源网络到目的网络所经过所有路由器出接口的Cost总和
IS-IS中的开销值:
- IS-IS接口的Cost在缺省情况下不与接口带宽相关,无论接口带宽多大,缺省时Cost为10
- 在实际部署中,IS-IS也支持根据带宽调整Cost值
- IS-IS以"累计Cost"为开销值,也就是流量从源网络到目的网络所经过的所有路由器出接口的Cost总和
- IS-IS中Cost的开销类型:
- Narrow类型(使能IS-IS的接口下最大只能配置值63)
- Wide类型(使能IS-IS的接口开销值可以扩展到16777215)
OSPF中的报文和IS-IS中的报文
OSPF中的报文
- OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式
- OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89
- OSPF的5种类型报文:
- Hello:发现和维护邻居关系
- Database Description(DD):交互链路状态数据库摘要
- Link State Request(LSR):请求特定的链路状态信息
- Link State Update(LSU):发送特定的链路状态信息
- Link State Ack(LSAck):确认收到的LSA
OSPF中Hello报文发送的时间间隔:缺省值10秒
OSPF中Hello报文失效时间:缺省值40秒
IS-IS中的报文
- IS-IS报文是直接封装在数据链路层的帧结构中的
- PDU(Protocol Data Unit,协议数据单元)可以分为两个部分:报文头(IS-IS Header)和变长字段部分(Variable Length Fields)
- 其中IS-IS Header可以分为通用头部(PDU Common Header)和专用头部(PDU Specific Header),对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而又所差别
- IS-IS的3种类型报文:
- IIH(IS-IS Hello):用于建立和维持邻居关系
- 广播网络中的Level-1路由器使用Level-1 LAN IIH(type:15)
- 广播网络中的Level-2路由器使用Level-2 LAN IIH(type:16)
- 点对点网络种使用P2P IIH(type:17)
- LSP(Link State PDU):用于交换链路状态信息
- Level-1 LSP(type:18)
- Level-2 LSP(type:19)
- SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整和同步
- CSNP:
- Level-1 CSNP(type:24)
- Level-2 CSNP(type:25)
- PSNP:
- Level-1 PSNP(type:26)
- Level-2 PSNP(type:27)
IS-IS中IIH报文发送的间隔时间:缺省值10秒
IS-IS中IIH报文失效时间:缺省值30秒
OSPF中邻接关系的建立和IS-IS中邻接关系的建立
在OSPF中邻接关系的建立
- 建立邻居关系
- 路由器会向目的地址为组播地址224.0.0.5,并且和它处于相同网段的设备发送Hello报文(报文简单记住四要素:Router ID、认证字段、Area ID,Neighbor字段,此时的Router ID就是路由器自己的Router ID,Neighbor则为空)
- 假设现在R1发送了Hello报文给了R2,R2在收到Hello报文后,会将收到R1报文的这个接口状态设置为Init状态,并将R1发送过来的Hello报文中的Router ID放到自己路由器的邻居表中,并发送一个包含自己Router ID,Neighbor为R1 的报文给R1(以组播方式发送,地址为224.0.0.5)
- R1收到R2发送过来的Hello报文后,查看报文中Neighbor字段是自己,就将自己收到R2报文的这个接口的状态设置为2-Way状态,并以同样的方式,将R2发送过来的Hello报文中的Router ID放到自己路由器的邻居表中,并发送一个包含自己Router ID,Neighbor为R2的报文给R2(以组播方式发送,地址为224.0.0.5)
- R2收到报文后,检查报文中的Neighbor字段是自己,就将自己接收到R1Hello报文的接口状态设置为2-Way状态。
这样,R1和R2两台路由器的接口都建立起了双向的2-Way状态,邻居关系建立起来
- 邻接关系建立
- 如果是广播网络,则进行DR和BDR的选举,选举的规则:
- 接口的DR优先级越大越优先
- 接口的DR优先级相等时,Router ID越大越优先
注意:接口的DR优先级设置为0是,表示该路由器不参与DR/BDR的选举
DR/BDR的选举是非抢占式的
- R1和R2两者已建立了邻居关系。当R1的邻居状态变为ExStart状态后,R1会发送第一个DD报文(此报文中I-bit置位,表示这是第一个DD报文,M-bit置位表示后续还有DD报文要发送,MS-bit置位,表示R1宣告自己是Master,DD序列号被随机设置为X)
- 同样R2的邻居状态变为ExStart状态后,R2会发送第一个DD报文(此报文中的I-bit置位,M-bit置位,MS-bit置位,DD报文随机设置为Y)。由于R2的Router ID较大,所以R2将成为真正的Master。收到此报文后,R1会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为ExChange状态
- 当R1的邻居状态变为ExChange后,R1会发送一个新的DD报文(此报文中包含了LSDB的摘要信息,序列号设置为R2在上一步骤中使用的序列号Y,I-bit不置位,表示这不是第一个DD报文,M-bit不置位,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit不置位,表示R1宣告自己是Slave)。收到此报文后,R2将邻居状态从ExStart变为ExChange状态
- 当R2的邻居状态变为Exchange后,R2会发送一个新的DD报文(此报文包含了LSDB的摘要信息,DD序列号为Y+1,I-bit不置位,M-bit不置位,MS-bit置位,表示R2宣告自己是Master)。
- R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的,并且在本地LSDB中没有的链路状态信息
- R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading状态变为Full状态
- R1向R2发送LSAck报文,作为对LSU报文的确认
IS-IS中邻接关系建立
- 广播网络中的邻接关系建立过程
在广播网络中,使用三次握手建立邻接关系
- 在Down状态下,R1组播(地址:01-80-C2-00-00-14)发送Level-1 LAN IIH报文,此报文中邻接列表为空
- R2 收到此报文后,将自己的邻接状态标识为initial,然后,R2再向R1回复Level-1 LAN IIH,此报文中标识R1为R2邻接
- R1收到此报文后,将自己与R2的邻接状态标识为Up,然后,R1在向R2 回复Level-1 LAN IIH,此报文中标识R2为R1的邻接
- R2收到此报文后,将自己与R1的邻接状态标识为Up,这样,两个路由器成功的建立了邻接关系
- 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待2个Hello报文间隔(缺省值:20秒),进行DIS选举
注意:Level-1 LAN IIH发送的组播地址:01-80-C2-00-00-14;Level-2 LAN IIH发送的组播地址:01-80-C2-00-00-15
DIS的选举规则:
- DIS优先级数值最大的被选举为DIS
- 如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS
注意:DIS发送Hello PDU的时间间隔是普通路由器的1/3(约3秒),这样可以确保DIS出现故障时能够更快的被发现
- P2P网络中的邻接关系建立过程
点到点网络中,邻接关系的建立使用两次握手方式
- RouterA接口启动IS-IS后,向RouterB发送一个P2P IIH,报文中携带了自己的System ID和其他信息,但报文并没有Neighbor邻居列表
- RouterB接收到Hello报文后,直接将RouterA的邻接状态设置为Up
- RouterA也在收到RouterB的P2P IIH报文后将直接将邻接状态设置为Up
OSPF中的DR和IS-IS中的DIS的区别
- 在OSPF协议中优先级为0的路由器不参与DR/BDR的选举;在IS-IS协议中优先级为0的路由器也参与DIS的选举
- 在OSPF中,当一台新路由器加入后,即使他的DR优先级值最大,也不会立即成为该网段中的DR(即,OSPF中的DR是不会抢占的);在IS-IS广播网络中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS(即,IS-IS中的DIS时会被抢占的),原有的伪节点被删除,此更改会引起一组新的LSP泛洪
- 在OSPF协议中,路由器只与DR和BDR建立邻接关系,DRother路由器不建立邻接关系;在IS-IS广播网络中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系
IS-IS中LSDB同步过程
- 广播网络中LSDB同步过程
- 新加入的路由器R3首先发送IIH报文,与该广播网络中的路由器建立邻接关系,建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(L1:01-80-C2-00-00-14;L2:01-80-C2-00-00-15)。这样,网络上所有邻接都将收到该LSP
- 该网段中的DIS会把收到的R3的LSP加入到LSDB中,并等待CSNP报文定时器超时(缺省值:10秒)并发送CSNP
- R3收到DIS发来的CSNP报文,对比自己的LSDB,然后向DIS发送PSNP报文请求自己没有的LSP
- DIS收到该PSNP报文请求后,向R3发送对应的LSP进行LSDB同步
- 点对点网络中LSDB同步过程
- R1先与R2建立邻接关系
- 建立邻接关系之后,R1与R2会先发送CSNP到对端设备,如果对端的LSDB与CSNP没有同步,则发PSNP请求索取相应的LSP
假设R2向R1索取相应的LSP
- R1发送R2请求的LSP的同时,启动重传定时器,并等待R2发送的PSNP作为收到LSP的确认
- 如果在接口LSP重传定时器超时,R1没有收到R2发送的PSNP报文作为应答
- 则R1重新发送该LSP
- R2收到LSP后,发送PSNP进行确认
OSPF路由计算和IS-IS路由计算
OSPF路由计算
IS-IS路由计算
- Level-1路由器的路由计算
- R1是Level-1路由器,只维护Level-1 LSDB,该LSDB中包含同属一个区域的R2及R3以及R1自己产生的Level-1 LSP
- R1根据LSDB中的Level-1 LSP计算出Area49.0001内拓扑,以及到达区域内各个网段的路由信息
- R2及R3作为Area 49.0001内的Level-1-2路由器,会在它们向该区域下发的Level-1 LSP中设置ATT标志位,用于向区域内的Level-1路由器宣布可以通过自己到达其他区域。R1作为Level-1路由器,会根据ATT标志位,计算出指向R2和R3的默认路由
- Level-1-2路由器的路由计算
- R2及R3路由器维护Level-1 LSDB,它们能够通过这些LSDB中LSP计算出Area 49.0001的路由
- R2及R3路由器维护Level-2 LSDB,它们能够通过这些LSDB中LSP计算出Area 49.0002的路由
- R2及R3路由器通过Level-2 LSP的形式将49.0001的路由发送到Area 49.0002
- Level-2路由器的路由计算
- R4和R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由
OSPF中的缺省路由和IS-IS中的缺省路由
OSPF中的缺省路由:
由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5和Type7路由
OSPF缺省路由的应用情况
- 由区域边界路由器(ABR)发布Type3 LSA,用来指导区域路由器进行区域之间报文的转发
- 由自治系统边界路由器(ASBR)发布Type5 LSA或Type7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发
区域类型 | 产生条件 | 发布方式 | 产生LSA类型 | 泛洪范围 |
普通区域 | 通过default-route-advertise命令配置 | ASBR发布 | Type5 LSA | 普通区域 |
Stub区域和Totally Stub区域 | 自动产生 | ABR发布 | Type3 LSA | Stub区域 |
NSSA区域 | 通过nssa [default-route advertise] | ASBR发布 | Type7 LSA | NSSA区域 |
Totally NSSA区域 | 自动产生 | ABR发布 | Type3 LSA | NSSA区域 |
注意:
import-route命令不能引入外部路由的缺省路由。当需要引入其他协议产生的缺省路由时,必须在ASBR上配置default-route-advertise命令,发布缺省路由到OSPF普通区域或OSPF的NSSA区域
OSPF路由域中在通告缺省路由前,会比较缺省路由的优先级,如果在某OSPF设备上同时配置了静态缺省路由,要使OSPF通告的缺省路由加入到当前的路由表中,则必须保证所配置的静态缺省路由的优先级比OSPF通告的缺省路由的优先级低
IS-IS中的缺省路由:
在IS-IS中,主要通过3种方式控制缺省路由的生成和发布:
- 在Level-1-2设备上,控制产生的Level-1 LSP中ATT位的置位情况
- 在Level-1设备上,通过配置使其即使收到ATT位置位的Level-1 LSP也不会自动产生缺省路由
- 在IS-IS中发布缺省路由
OSPF中的等价路由和IS-IS中的等价路由
当路由表中存在到达同一目的地址,且同一路由协议发现的多条路由时,若这几条路由的开销值也相同,那么这些路由就是等价路由
OSPF中存在等价路由可以实现负载分担
IS-IS中存在等价路由可以采取两种方式:
- 配置负载分担:流量会被均匀的分配到每条链路上
- 配置等价路由优先级:针对等价路由中的每一条路由,明确指定其优先级,优先级高的路由将被优选,优先级低的路由可以作为备用链路
当组网中存在的等价路由数量大于maximum load-balancing命令配置的等价路由数量时,按照下面原则选取有效路由进行负载分担:
- 路由优先级:选取优先级高的路由进行负载分担
- 下一跳设备的System ID:如果路由的优先级相同,则比较下一跳设备的System ID,选取System ID小的路由进行负载分担
- 本地设备出接口索引:如果路由优先级和下一跳设备的System ID都相同,则比较出接口的索引,选取接口索引小的路由进行负载分担