一、动态路由产生背景
1、静态路由的手工配置麻烦。
2、静态路由不太合适大规模网络。
3、静态路由不会根据网络拓扑结构变化,自动调整路径。
二、分类
1、按工作区域:
内部网关协议:RIP---Routing Information Protocol(路由信息协议)、ospf---Open Shortest Path First (开放式最短路径优先协议)、IS-IS---Intermediate System to Intermediate System(从中间系统到中间系统)
外部网关协议:BGP---Border Gateway Protocol(边界网关协议)
2、按算法:
基于距离矢量:RIP:BELLMAN-FORD,周期性自己的路由表,给相邻的路由器。
Bellman-Ford算法的基本步骤:
创建一个距离表dist,用来存储从源节点到其他节点的当前最短距离。起始时,将源节点的最短距离设为0,将其他节点的最短距离设为无穷大。
对于图中的每条边,进行松弛操作。即对于边(u, v),如果通过u节点到达v节点的路径距离小于目前记录的最短距离,则更新v节点的最短距离为更小的值。
重复执行步骤2,直到所有边都被遍历了N-1次(N为图中的节点数)。这是因为任意两个节点之间的最短路径长度最多不超过N-1条边。
检查是否存在通过松弛操作仍然能够改变最短距离的边,如果存在,则说明图中存在负权回路,即无法找到最短路径。否则,最终的距离表dist中存储的就是从源节点到每个节点的最短距离。
基于链路状态:ospf(开放式最短路径优先协议)使用dijkstra算法、IS-IS(从中间系统到中间系统)
Dijkstra算法的基本步骤:
创建一个集合S和距离表dist,用来存储已经找到最短路径的节点和它们的最短距离。起始时,将源节点加入集合S,将源节点的最短距离设为0,将其他节点的最短距离设为无穷大。
从集合S中选取一个距离最小的节点v,将其标记为已访问。
遍历节点v的所有邻居节点w,计算从源节点到节点w经过节点v的距离。如果这个距离比当前记录的最短距离要小,则更新节点w的最短距离。
重复步骤2和步骤3,直到集合S包含了所有节点或没有可访问的节点为止。
最终,距离表dist中存储的就是从源节点到每个节点的最短距离。
三、路由器学习过程及规则
总结:
1、周期性的发送路由表,发给相邻的路由器
2、学习过程:
(1)对自己没有的路由信息进行无条件学习,并将矢量值进行叠加。
(2)对于同一个路由信息,比较信息的来源,如果来源不同,会比较矢量值,对值大的,不学习,值小的,学习。
如果来源相同:无条件的学习。
四、RIP协议---BELLLMAN-FORD,以跳数为距离的衡量值
(1)环路产生
现象:数据包会在某一个网段一直循环,走不出去;
距离矢量值会无限制的进行叠加。
(2)环路解决方法
水平分割:不会把从一个接口学到的路由信息传到这个接口。
路由毒化:当发现某一网段发生故障,路由器会将该路由项设为最大值,并发送给其他邻居,不发给原接口。
毒性逆转:会把从一个接口学到的路由信息回传到这个接口,带毒回传infinity(inf)给原接口。
保持失效计时器:180秒,在失效时间内不接受其他邻居发送的更新信息,防止更新欺骗,只接受相同邻居发送的路由项小于最大值的更新信息。
最大跳数限制: 不能超过16跳。
触发更新:对于网络拓扑结构的变化,会立刻通知给其相邻的路由器。
(3)RIP计时器:
更新计时器:30秒,每个路由器更新周期都是独立的。
抑制计时器:180秒,更新欺骗,度量值大的不接受,某网络处于故障时,路由器对该路由项设为最大值,并进入抑制时间,在抑制时间内不接受其他邻居发送的更新信息,只接受相同邻居发送的路由项小于最大值的更新信息。
保持失效计时器:180秒,路由器打上possibly down标签,路由设置为16跳。
刷新计时器:240秒,彻底删除。
(4)RIP数据包----UDP--520端口
update:更新数据包
request:请求自己没有的路由信息
response:回复请求的路由信息
五、RIP路由协议特点
1、周期性和触发性更新,周期性更新会发送全部路由信息,占用大量的带宽。
2、最大跳数限制为15,不适用大规模网络。
3、公有协议,UDP-520端口,不可靠传输。
4、路由收敛速度慢。
5、协议存在环路问题。
六、rip的版本对比
1、RIPv1是有类路由协议,RIPv2是无类路由协议。
2、RIPv1不能支持VLSM,RIPv2可以支持VLSM。
3、RIPv1不能关闭自动汇总,RIPv2可以在关闭自动汇总的前提下,进行手工汇总。
4、RIPv1是不支持认证,RIPv2是支持认证。
5、RIPv1是广播发送协议报文,RIPv2是组播发送协议报文,组播地址:224.0.0.9
七、RIP实验
1、配置IP地址
首先把192.168.1.0/24划分成四个大网段
192.168.1.0000 0000---192.168.1.0/26---第一条链路
192.168.1.0100 0000---192.168.1.64/26---第二条链路
192.168.1.1000 0000---192.168.1.128/26---R1环路
192.168.1.1000 0000---192.168.1.128/27---L0
192.168.1.1010 0000---192.168.1.160/27---L1
192.168.1.1100 0000---192.168.1.192/26---R2环路
192.168.1.1100 0000---192.168.1.192/27---L0
192.168.1.1110 0000---192.168.1.224/27---L1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.1.65 26
[R1-GigabitEthernet0/0/0]quit
[R1]int LoopBack 0
[R1-LoopBack0]ip add 192.168.1.129 27
[R1-LoopBack0]quit
[R1]int LoopBack 1
[R1-LoopBack1]ip add 192.168.1.161 27
[R1-LoopBack1]quit
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.1.66 26
[R2-GigabitEthernet0/0/0]quit
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.1.1 26
[R2]int LoopBack 0
[R2-LoopBack0]ip add 192.168.1.193 27
[R2-LoopBack0]quit
[R2]int LoopBack 1
[R2-LoopBack1]ip add 192.168.1.225 27
[R2-LoopBack1]quit
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 192.168.1.2 26
[R3-GigabitEthernet0/0/0]quit
[R3]int LoopBack 0
[R3-LoopBack0]ip add 3.3.3.3 24
[R3-LoopBack0]quit
2、配置rip并运ripv2版本和关闭自动汇总
[R1]rip 1
[R1-rip-1]version 2
[R1-rip-1]undo summary
[R1-rip-1]network 192.168.1.0
[R2]rip 1
[R2-rip-1]version 2
[R2-rip-1]undo summary
[R2-rip-1]network 192.168.1.0
[R3]rip 1
[R3-rip-1]version 2
[R3-rip-1]undo summary
[R3-rip-1]network 192.168.1.0
3、配置RIP的接口认证
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]rip authentication-mode md5 usual cipher 12345
[R1-GigabitEthernet0/0/0]quit
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]rip authentication-mode md5 usual cipher 12345
[R2-GigabitEthernet0/0/0]quit
4、减少路由条---手动汇总
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]rip summary-address 192.168.1.128 255.255.255.192
[R1-GigabitEthernet0/0/0]quit
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]rip summary-address 192.168.1.192 255.255.255.192
[R2-GigabitEthernet0/0/0]quit
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]rip summary-address 192.168.1.192 255.255.255.192
[R2-GigabitEthernet0/0/1]quit
5、测试