路由引入正解(一)_基础
理论
前言
路由引入是我们在路由学习阶段的一个里程碑,也是传统HCIE考试阶段最难的地方,是很多同学的弱点,确实路由引入比较难以理解,也鲜有人老师能把这一部分讲好。路由引入命令极其简单,原理却没有那么容易理解。
路由引入的本质:
路由引入的本质是进程之间的路由信息翻译以及路由信息传递。
关于路由引入通俗的理解:
一边说中文,另一边说英文,路由引入不是让说中文的人学会英文,也不是让说英文的人学会中文。而是两边都保持不变,由中间人将英文翻译成中文然后讲给只会说中文的人听,或者由中间人将中文翻译成英文讲给只会讲英文的听,中间人至关重要,需要即懂英文,也懂中文。
路由器接口的IP地址是配置在接口上吗?
普通的路由器与主机一样,虽然从客观来看IP地址就是基于接口去配置的,但实际上IP地址是配置在全局的操作上系统上的,而不仅仅是配置在接口上的.同一个路由器,A接口配置了192.168.10.1,那路由器的操作系统就不允许B接口也配置成192.168.10.1,同一台路由器的接口与接口之间并不是完全独立的,所有的接口都归同一个操作系统控制。
那路由器的路由协议是配置在接口上吗?
RIP、OSPF看起来都是基于接口的,我们在配置的时候是可以直接在接口上激活OSPF的,OSPF本身也称之为“接口敏感型协议”,当你在OSPF进程当中宣告了A接口的网段或IP时,那OSPF就在这个接口上有所体现,比如向外发送hello报文,但并不能说OSPF是配置在接口上,OSPF本质上是配置在全局操作系统上的进程。
路由器上接口IP地址可以重复吗?
路由器的接口IP地址不能重复,因为在路由器的操作系统看来,数据库当中已经有了一个一模一样的IP地址,如果放任在多个不同的接口配置相同的IP地址,那数据转发就会乱掉了,所以在操作系统代码开发时明确规定不可以这样。
同样的道理,如果A路由器同时运行了OSPF和ISIS,现在将ISIS数据库当中的路由引入到OSPF当中,那此时A路由的OSPF数据库会新增ISIS所发送的路由表吗?并不会的,这个问题还是要全局去看,对A设备来说,它已经通过ISIS知道某些路由如何转发,那它无论如何也不会将这些路由再写入到自己OSPF数据库当中,否则转发的时候那到底是给ISIS还是给OSPF呢?如果根据优先极给了OSPF,那真正的目的地明明在ISIS对应的区域当中,这岂不是乱套了!在此处,路由引入并不是将ISIS数据库的内容写入到OSPF,而是将ISIS数据库内容从OSPF对接的接口当中发送出去,本地OSPF数据库并不会发生任何变化。
我们来总结一下路由引入的原则:(这个原则非常重要,我们下面还会详细讲到)
- 引入的路由必须们于路由表当中,隐含路由引入所引入的路由都是最优秀的路由条目
- 引入是外向的,是负责引入的路由器不会改变自身的路由表
- 假如在中间人设备上把路由协议A引入进B,表示为A→B,则会导致
- 路由引入不是将A路由协议数据库当中的路由条目写入到B路由协议对应的数据库
- 而是将A路由协议数据库当中的路由条目从B路由协议对应的接口当中发送出去
- 跟A有关的所有路由会引入进B
- 从A学习到的路由会引入进B
- 启用了A的接口所在网络路由会进入B
实验一
我们来看一下上面这张图:
- 首先,AR1把RIP引入进ISIS
- 然后,AR1再把ISIS引入到OSPF
那么AR1能学到几条路由呢?这个问题非常重要,我们直接从AR1的解释来看三个路由协议的路由库,如下所示:
很多同学在这个地方都会回答错误,当AR1把RIP引入到ISIS,然后再把ISIS引入到AR2,其实AR2仅会收到两条路由:
# AR2接收到的路由
10.0.4.4
10.0.14.0
我们接来就来详细说一下为什么AR2仅会接收到以上两条路由呢?
重点要理解我们引入规则当中的一句话:负责引入的路由器并不会改变自身的路由表。
你看哈,在上面这张图当中,AR1是中间人,负责进行引入。在第一次将RIP引入到ISIS时,AR1的ISIS数据库有没有发生变化呢?并没有,AR1已经通过RIP得知了10.0.3.3和10.0.13.x这两条路由,就不会再把这两条路由再放到ISIS的数据库当中,否则的话,路由转发时岂不是会乱掉了!但难道AR1什么都不做吗?也不是,AR1虽然不会把RIP对应的这两条路由写入到自己的ISIS数据库,但是AR1还是会将这两条RIP路由转换成ISIS能识别的数据报文从ISIS对应的接口(G0/0/2)发送出去,也就是说中间人只转发,不保存或刷新自己的数据库。中间人不会发生变化,但AR4的ISIS数据库会新增两条路由条目。
好了,接下来该AR1再将ISIS的路由表引入到OSPF当中了,其实也就是将ISIS的数据库当中的内容翻译成OSPF能识别的报文再从G0/0/0接口发送出去,由于在上一步AR1的ISIS数据库并没有发生改变,依然只有10.0.4.4和10.0.14.0这两条路由,那AR2就只会收到这两条路由,还是那句话:负责引入的路由器并不会改变自身的路由表。
有意思来了,虽然AR1这么折腾,将RIP引入到ISIS,又向ISIS引入到OSPF,可是AR1的路由表一点都没有发生变化!
实验二
AR7将RIP引入到ISIS,然后AR6再将ISIS路由引入到OSPF,AR5能收到几条路由条目?两条
这个题目与上一个题目其实有点相似,我们来看一下,当AR7将RIP当中的10.0.78.0引入到ISIS时,根据上面的原则,我们知道AR7的数据库不会发生变化,因为AR7就来就有去往10.0.78.x的路由,AR7的ISIS数据库不会有任何变体,仅仅把10.0.78.x从g0/0/0转发给AR6.
AR6的数据库并没有10.0.78.x的路由条目,所以AR6的ISIS数据库会新增一条路由,加上AR6自己原来就有ISIS路由10.0.67.x,AR6的ISIS数据库当中当前有两个路由条目;
最后AR6又将ISIS数据库中的内容引入到OSPF,所以AR6数据库当中仅有两条路由条目(如下所示),发送给AR5,所以AR5会收到两条路由
# AR6的ISIS数据库当中的路由条目
10.0.78.X(刚从AR7那里面学到的)
10.0.67.x(AR6 ISIS 数据库本身就有的)