前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html;今天我们来聊一聊动态路由相关概念;
首先我们要清楚什么是动态路由?从字面上个人的理解,动态是指能够根据某种条件的变化结果也随之自动的发生变化;静态是指当某种条件发生变化,而结果不会随之变化(静止不动);对于路由也是一样的,静态路由就是指管理员手动配置的路由信息,该路由信息不会根据网络拓扑的变化而自动变化,当网络拓扑发生变化,必须由管理员手动的更新其路由信息;和静态路由相反的是动态路由,该路由信息具有两个特点,第一是不需要管理员手动配置路由信息,而是从其他路由器哪里根据某种动态路由协议学习过来的路由信息;其次该路由能够感知网络拓扑的变化,当网络拓扑发生变化,对应的路由信息能够根据拓扑的变化而变化;
从上述的描述中,动态路由的生成是基于某种动态路由协议,也就是说只有运行相同动态路由协议的路由器才能相互学习到对方的路由信息;那什么是路由协议呢?其实我们可以把路由协议理解为路由器之间交互信息的一种语言,其作用就是用来共享路由信息,维护路由表,提供最佳转发路径;
路由协议总览
提示:上图主要描述了路由协议的发展史以及根据不同算法对其分类;
提示:上图主要把路由协议进行了分类,从作用范围来划分,分为内部网关协议igp和外部网关协议egp;而内部网关协议igp中,有可以根据其算法的不同分为距离矢量协议和链路状态协议,其实除此之外还有路径矢量协议(主要是bgp用的算法);
路由协议分类:根据作用范围分类
提示:我们可把路由协议分为IGP和EGP,IGP(interior gateway protocol)内部网关协议,用于一个as内部交换路由信息,比如常见的igp路由协议有RIP、OSPF、IS-IS;EGP(exterior gateway protocol)外部网关协议,用于多个as之间交换路由信息,如BGP协议;那什么是AS呢?AS是autonomous system自制系统,所谓自制系统就是处于单个管理机制下的网络,比如一个企业,电信,联通,移动等;
路由协议分类:根据协议算法分类
DV(distance-vector):距离矢量;简单的我们可以把距离矢量理解为路牌,我们要到某地去,路牌可以告诉我们前方怎么这么走,当并不能告诉我们前方是否还要经过其他路牌,其他路牌上的信息等;所以我们只有根据路牌到达对应的位置后,在查看其它路牌信息,最终我们是可以根据路牌的指引到达目的地;类比路由器如下图
提示:当R1要访问subnet X 的时候,如果各个路由器之间都运行的是距离矢量算法的路由协议,那么对于R1来说它只会收到R2,R5和R7发送到路由信息;也就是说R1只知道R2,R5和R7的存在,并不知道其他路由器的存在,而对于R1的选路规则就只有一条,看那个路由器发送过来的路由信息跳数最少,它就选择哪一条;如上图R1要到subnet X ,R1肯定走R7,因为R7告诉R1,走我这里只有2跳;从上述的描述不难想象基于距离矢量算法的路由协议,它并不了解整个网络拓扑结构,它依靠和自己直连的路由器发送过来的路由信息;其次路由器选路是根据对方发送到跳数来进行判别那条路最优,本质上就不是一个好的选路策略;因为判断一条路是否最优并不是只有跳数这一个条件;比如链路的带宽,开销等等都决定了路由是否最优;常见的基于距离矢量算法的路由协议有RIP 、EIGRP;
LS(link-state)链路状态;从字面上理解,这种算法的路由协议并不是发送的是路由信息,而是描述链路状态的一些信息(LSA链路状态通告),多台路由器根据链路状态通告信息结合spf(shortest path first)z最短路径优先算法计算出对应的路由信息;我们可以理解为现实生活中的地图;lsa就好比交通广播之类的信息,我们可以根据交通广播通告的路况信息,从而知道去某地的路况是否良好,这样走可以最节省时间,路径最短等等;如下图
提示:R1要访问172.16.3.1/24网络,对于整个网络中的路由器来说,它们都知道R8的存在,因为R8的链路状态通告是全网转发的;并且每台路由器都会发送las告诉其他路由器本路由器可以到达那些网络,链路开销以及状态信息等;所以对于上图的每个路由器来说,他们都分别了解全网大拓扑结构;对于R1来说,它的选路就不是根据其跳数来选,而是根据收到的lsa,根据SPF算法自动算出去往172.16.3.0/24的路由,并存入路由表中;所以基于链路状态结合SPF算法的路由协议相比距离矢量算法的路由协议要更加了解整个网络拓扑结构;常见的路由协议ospf、is-is ;
路由协议分类:根据发送的更新是否携带掩码
有类(classful):ip地址的分类默认分为abcde,其中掩码为8的我们称为a类ip地址,掩码为16的是b类,掩码是24的为c类;所谓有类是指发送更新不携带掩码;我们知道一个网络如果不携带掩码我们是不能计算器网络id的,所以这里的不带掩码是指自带默认分类的掩码,如掩码为8/16/24之类的;有类的路由协议有RIPv1、IGRP;
无类(classless):无类和有类相反,它是不管是默认掩码还是其他什么掩码,它在发送更新时都会携带掩码;无类的路由协议有RIPv2、EIGRP、OSPF、IS-IS、BGP;
有类和无类的更新
提示:有类路由协议的更新默认不携带掩码,它只能依靠默认的ABCip地址分类来确定网络,相比无类存在,当一个数据包要去172.16.3.0/24的网络时,对于有类来讲,它只会更新172.16.0.0/16;这样一来对于R2来说不管走哪一边都一样,因为都是172.16.0.0/16(等价路由),这样就可能导致数据包无法到达目标网络的情况;而对于无类路由协议来讲,就不存在上述的问题,因为无类路由协议更新时都会携带掩码,有了掩码就能明确的计算出具体的网络id来;
路由协议分类:根据业务应用分类
路由协议操作规则:
1、协议都是在接口上运行的;对于路由器来讲不同的接口的是一个网络(路由器上的接口不能配置相同的网络),所以具体哪些网络跑什么动态路由协议,都是把对应的动态路由协议跑在对应的接口上(一般不是管理员手动配置在那个接口上,而是根据具体的发布的路由,由路由器自动匹配对应的网络并在所在接口运行动态路由协议);
2、只能学习和发布相同协议已知的路由信息;这句话的意思是说只有相同路由协议的接口才能互相学习,其次是能学习到对方的路由的前提是,对方明确发布了对应路由对应的网络;
3、如果不同的路由协议间需要交换路由信息,就需要进行注入(import);如下图
提示:能够注入的路由器一定是多个接口运行了不同的路由协议;就好比上述的R2,它能懂RIP协议,又懂OSPF协议,所以把ospf注入到rip中去,对应rip协议进程就会有对应ospf进程生成的路由信息,这样一来再由R2的RIP进程所在接口,向R1的RIP进程所在接口进行更新,即R1就能学习到ospf中的路由信息;
路由器收敛:当所有路由表包含相同网络可达性信息,网络(路由)进入一个稳定状态的过程;网络在达到收敛前是无法完全正常工作的;
衡量动态路由协议的一些性能指标