IS-IS 路由协议详解(三)
DIS 和 DR 的区别
下面表格讲述的是 IS-IS 协议的 DIS 和 OSPF 协议的 DR 的区别
类型 | DIS | DR |
---|---|---|
参与选举 | DIS所有的优先级都参与选举 | 优先级为 0 不参与选举 |
选举等待时间 | 两个 Hello 包时间 | 40S |
备份 | 无备份 | 备份设备有 BDR |
邻接关系 | 所有设备都是邻接关系 | 只有DR 和 BDR 与其他设备建立邻接关系 |
抢占性 | 会抢占 | 不会抢占 |
作用 | 周期性发送 CSNP 报文,保证数据库同步 | 主要为了减少 LSA 泛洪 |
IS-IS 的网络类型
IS-IS 的网络类型分为两种:点到点链路 和 广播链路
点到点链路
点到点链路的邻接关系建立分为 两次握手 和 三次握手
两次握手:对端路由器发送 Hello 单方向的 UP 建立邻居,容易存在单通道的风险
三次握手:类似于广播邻居的建立,唯一不同的是广播网络邻居里面携带的是 MAC 而点到带你里面携带的是 SYS ID
修改握手类型:
类型 | 命令 | 备注 |
---|---|---|
2-way | isis ppp-negotiation 2-way | 3-way 可以兼容 2-way |
3-way | isis ppp-negotiation 3-way(默认) | 后面加上 Only 就不会兼容 2-way 了 |
广播链路
IS-IS 的广播链路邻居建立和 OSPF 的邻居建立基本相似,只不过 OSPF 邻居建立收到的是对端的 RID ,IS-IS 的邻居建立收到的是邻居的 MAC
因为是广播网络,需要创建 DIS 所以在邻居建立完成,路由器会等待两个 Hello 报文间隔再进行 DIS 的选举
-
只有在广播网络中才会有 DIS (伪节点)
-
DIS 支持抢占,因为 DIS 和所有的设备之间都是建立邻接关系,谁当 DIS 都可以
-
如果没有 DIS IS-IS 的数据库有可能同步,只是 LSDB 数据库的同步需要 DIS 的保证
-
DIS 的 Hello 报文是三分之一秒发送一次(确认 DIS 的)
-
DIS 十秒钟发送 CSNP 报文,对该网段的 LSDB 表进行更新(保证数据库的同步)
-
在广播网络中 IS-IS 需要在路由器中选举一个路由器作为 DIS
-
level-1 / level-2 的 DIS 是分别选举的
-
DIS 负责生成伪节点的链路状态协议单元 LSP,用来描述网络存在的哪些设备
-
在 IS-IS 的 LSDB 数据库中 DIS 会生成两条 LSP
-
LSDB 表项中的 LSP 有 01-00 就是 DIS 产生的
01 为 IS-IS 的链路信息,相当于 OSPF 的二类 LSA
00 为 IS-IS 的链路信息,相当于 OSPF 的一类 LSA
DIS 的作用
-
在广播网络中作为一种确认机制
-
保证数据库的同步
DIS 的选举规则
-
首先比较优先级越大越优,默认为 64(范围是 0~127)
-
如果优先级相同比较 MAC 地址
-
优先级为 0 的设备也具有选择权
IS-IS 的 LSDB 更新过程
广播网络
广播网络 DIS 的 LSDB 更新
***
没有收到过***:DIS 收到 LSP ,会在数据库中对应相应的记录 ,如果没有则加入 数据库 ,并组播新的数据库内容
收到过***:若收到的 LSP 的***大于本地的*** ,就替换为新报文 ,并组播 发送数据库内容
若收到的 LSP 的***小于本地的*** ,就从入端口发送本地的 LSP
剩余时间
若***相同则比较剩余时间,若收到的 LSP 的剩余时间小于本地的 LSP 的剩余时间 ,就替换为新报文 ,并广播数据库内容
若收到的 LSP 的剩余时间大于本地的 LSP 的剩余时间 ,就从入端口发送本地的 LSP
checksum(校验值)
若两个***和剩余时间都相等,则比较 checksum 若收到的 LSP 的 checksum 大于本地的 LSP 的 checksum ,则替换为新报文 ,并组播发生数据库内容
若收到的 LSP 的 checksum 小于本地的 LSP 的 checksum ,就从入端口发送本地的 LSP
若两个***、剩余时间、checksum 都相等,则不转发该报文
点到点网络
点到点网络的 LSDB 更新
***
若收到 LSP 的***比自己本地的 LSP ***大 ,则将这个新的 LSP 放进自己的 LSDB 数据库 ,在通过一个 PSNP 确认自己收到此条 LSP --------最后会将此条 LSP 发送给除发送该 LSP 的其他邻居
若收到 LSP 的***比自己本地的 LSP ***小 ,则直接给对端发送本地的 LSP ,并等待一个对方给自己发送 PSNP 报文确认
剩余时间
若收到的 LSP 的***与本地的 LSP 的***相同 ,则比较剩余时间 ,若收到的 LSP 的剩余时间小于本地的 LSP 的剩余时间 ,则将该 LSP 存入到 LSDB 并发送PSNP 确认收到过 LSP--------然后会将此条 LSP 发送给除发送该 LSP 的其他邻居
若收到的 LSP 的剩余时间大于本地的 LSP 的剩余时间 ,则直接给对方发送本地的 LSP ,然后等待对端发送一个 PSNP 确认
checksum(校验值)
若两个***和剩余时间都相等,则比较 checksum 若收到的 LSP 的 checksum 大于本地的 LSP 的 checksum ,则将该 LSP 存入到 LSDB 并发送 PSNP 确认收到此报文--------然后会将此条 LSP 发送给除发送该 LSP 的其他邻居
若收到的 LSP 的 checksum 小于本地的 LSP 的 checksum ,则直接给对端发送本地的 LSP ,然后等待对端发送一个 PSNP 确认
若两个***、剩余时间、checksum 都相等,则不转发该报文
作者:jerry