一、动态路由协议概述
1.动态路由器是什么
-
我们以前学过,给路由器接口配置好IP并开启后,路由器的路由表中会自动形成直连路由器条目,但是非直连网段的路由条目需要手工去配置静态路由等
-
但是现在如果使用动态路由器,那么就不需要手动配置路由条目,因为连接的路由器之间会通过某种协议相互交流学习
-
而且如果r3路由器周围的网段发生了变化,它自己包括其他路由器学习到后会及时的做出反应更新路由信息
2.动态和静态路由器使用场景
- 网络拓扑图太大,且经常发生变化则推荐使用动态路由器:经常变动的路由信息不用工程师手动去配减少管理任务,路由器自己会更轻松更及时的更新。
- 在网段十分稳定的网络中推荐使用静态路由器:因为网络稳定即路由信息就很少发生变动,如果使用动态路由器由于它们之间会相互通信会占有一定的带宽,效率降低。此网络中只需要使用静态路由器手动将路由表配置完整即可
- 所以网络中静态路由和动态路由互相补充
3.动态路由协议是什么
- 动态路由协议:路由器之间用来交换信息的语言。即动态路由协议不止一种
- 动态路由器之间交流学习需要共用同一种协议,这类协议就叫动态路由协议。如果要配置动态路由器,需要路由器内置并支持某种动态路由协议的,才可以完成动态路由功能
4.度量值
-
如果在一个网络中出现有多条路径可以到达一个网段,比如下图中:r1可以先通过r2再到r3最后到达目标网段;也可以通过直接到r3最后到达目标网段。而r1,r2,r3都是动态路由器,那么r1如何动态学习路由表选择最佳路由路径呢
-
那么此时就会有一个度量值来评判:跳数、带宽、负载、时延、可靠性、成本。不同的动态路由协议依据的度量值是不同的。比如有的协议以跳数作为度量值,那么r1通过与r2、r3交流比较度量值,最终会学习路由到192.168.1.0/24网段的下一跳为r3的端口,不会走r2;而有的协议以带宽、实验、负载作为度量值,那么r1最终会学习路由到目标网段的下一跳为r2的端口。所以选择不同的协议由于每种协议的度量值不同,会导致路由路径的选择不同,速度与效率也不同
-
即有多条路径选择时,度量值是选择路径的标准
5.路由协议分类
按照路由执行的算法分类:可分为距离矢量路由协议和链路状态路由协议。其实就是依据的度量值不同
- 距离矢量路由协议:依据从源网络到目标网络所经过的路由器的个数选择路由(依据跳数度量值考虑)
- 举例:RIP、IGRP等
- 链路状态路由协议:综合考虑从源网络到目标网络的各条路径的情况选择路由(综合度量值考虑)
- 举例:OSPF、IS-IS等
二、RIP–距离矢量路由协议
1.RIP基本概念
- 广播更新:一旦给路由器启用了RIP协议,每隔30秒会将自己的路由表信息广播给邻居,即每隔30秒更新一次(可以自己修改时间间隔),内容为整个路由表信息
- RIP的度量值为跳数:最大跳数为15跳,16跳为不可达
- RIP服务端口号:UDP520端口。一旦路由器开启RIP协议,路由器上会开启UDP520端口来监听和发送RIP服务
- 从邻居哪个端口上学习更新的路由信息,就将邻居发送此信息的端口IP作为新学习更新的网段的下一跳IP;而不是把邻居发来路由信息原封不动的抄过来!
2.RIP协议形成路由表过程
误区:一个网络中的路由器不一定会同时广播更新,因为比如r1路由器是10点开启的,那么下一次更新的时间是10点30秒;而r2路由器可能是10点5秒开启,那么下一次更新时间为10点35秒。即r1会先于r2广播发送自己的信息供邻居更新。不一定是同时刻一起发送的
-
连接好开启端口配好IP路由器学习到直连路由(next hop为下一跳IP;metric为度量值,对RIP协议来说是跳数)
-
更新周期30s到时,路由器会向邻居发送路由表。发送的是自己目前的路由表,邻居收到后会比对自己的路由表添加没有记录的网段的路由条目;如果有路由条目网段相同但是下一跳变了,会更新此路由条目
-
再过30s,第二个更新周期到了再次向邻居发送路由表,一个路由条目每被作为新的条目学习一次,跳数就加一
3.RIP协议的路由环路问题
-
假设现在所有的路由器已经动态学习完毕
-
假如此时40网段断开了,r3会立马更新直连路由将40网段的路由条目的跳数改为16表示不可达。如果r3在下一次更新时间到来之前,r2到达广播更新时间发送自己的路由表信息给r3,r3学习发现40网段的下一跳和自己不一样,且跳数为1,则会更新自己的路由表,由于收到的广播源IP为30.1.1.1,则会将30.1.1.1作为40网段的下一跳。学到错误的路由条目
-
当下一次r3更新周期到了向r2发送路由信息,r2收到后发现40网段的下一跳和自己的路由表上记录的不一样,则会将r3的学习过来,由于此信息的源IP为30.1.1.2,即从30.1.1.2发来的,所以会把30.1.1.2作为40网段的下一跳并将跳数加一。
-
如此反复的循环下去,直到增加到16为止
4.水平分割阻止环路发生
-
默认的RIP协议默认开启了水平分割功能,不需要手动去配置
-
水平分割:从一个接口学习到路由信息,不再从这个接口发送出去。
比如r2的40.0.0.0网段的路由条目的形成是通过r3发送路由信息,经过30.1.1.1最终被学习到的;那么r2下一次更新周期不会再把40网段的路由条目信息从30.1.1.1发送出去给r3
三、RIP协议相关命令
0.命令总结
-
rip version1的设置
router rip version 1 network 10.0.0.0 network 172.16.0.0 network 192.168.1.0 exit
-
rip version2的设置
Router rip version 2 no auto-summary network 10.1.1.0 network 172.16.1.0 network 192.168.1.0 exit
1.启用RIP协议
-
或者称为启用RIP服务/开启UDP520端口
router rip
2.选择rip版本
-
可以选择RIP协议的版本:version1和version2两个版本,不选择默认version1(老版本),但是要配置必须所有动态路由器都使用同一个版本的RIP协议才行
router rip version 1/2
3.激活端口
-
激活路由器所有的端口,使端口可以发送和接收路由信息,不激活则不会发送从此端口发送路由信息
router rip version 1/2 network 网络地址 #举例:一个路由器左边直连192.168.1.0/24网段,另一边直连10.1.1.0/24网段 net work 192.168.1.0 #因为192开头的是C类地址,C类地址默认子网掩码为255.255.255.0,所以只需要写前24位即可 net work 10.0.0.0 #因为10开头的是A类地址,A类地址默认子网掩码为255.0.0.0,所以只用写前8位即可
network后面跟的不是网段IP配子网掩码,因为version1的rip协议不认识,它会根据你写的网段IP地址自动判断属于A/B/C/D/E类中哪一类地址,自动给你添加子网掩码。
4.查看路由表
-
查看路由表中通过RIP协议学到的路由条目
do sho ip route
R表示通过RIP协议学习到的路由条目,120表示通过rip协议学习到的路由条目管理距离值为120,而静态路由条目的管理距离值为1,所以如果同一个网段既手工配置了静态路由又自动通过RIP协议学到了路由条目,会优先根据此网段的静态路由条目路由帧,后面的数字是跳数(度量值)。
5.禁止地址自动汇总
-
问题:为什么网段的子网掩码变了,因为rip协议发送的路由信息中不带子网掩码,那么会根据世界上的五大类地址:A类,B类,C类,D类,E类的特征来决定此网段的IP属于哪一类,并添加地址对应类的默认子网掩码。那么此时会出现一个问题:如果一个网络中有两个网段30.1.1.0/24和30.2.2.0/24,当r1发送路由信息给r2,r3也发送路由信息给r2,由于信息中不包含子网掩码,则r2会学习形成两台路由条目,都是30.0.0.0/8,跳数也相同,管理距离值也相同。那么此时如果有一个人想访问30.1.1.0/24网段中某IP,经过r2后会发送两份消息,一个往左走,一个往右走,那么这个人最终收到的回包是一个通一个不通一个通一个不通…
-
解决方法:如何禁止路由器自动汇总网段的子网掩码,自作聪明的判断网段归属于哪一类地址自动添加子网掩码:一定先保证RIP协议是version2版本才能输入此命令,v1版本没有此功能
router rip version 2 #一定是version2才有此功能 no auto-summary #禁止自动汇总 network 10.1.1.0 network 20.1.1.0 exit
6.删除RIP协议
no router rip
7.查看启用的动态路由协议
do show ip protocols #直接看
do sho ip route #根据条目的开头字母判断