目录
RIP介绍
RIP是一种比较简单的内部网关协议。RIP使用了基于距离矢量的贝尔曼 -福特算法(Bellman-Ford)来计算到达目的网络的最佳路径。路由器开始运行RIP,当路由器的更新周期30秒到了的时候,会向邻居发送路由表Metric:度量值,衡量一条路由好坏的值。发送路由表时Metric值会加1。学习路由时,会学习最佳路由,将Metric值小的路由放到路由表当中(【120/1】120是管理距离即优先级,1为跳数)
工作原理
路由器启动时,路由表中只会包含直连路由。
运行RIP之后,路由器会发送Request报文,用来请求邻居路由器的RIP路由。
运行RIP的邻居路由器收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。
路由器在收到Response报文后,会将相应的路由添加到自 己的路由表中。
RIP网络稳定以后,每个路由器会周期性地向邻居路由器通告自己的整张路由表中的路由信息,默认周期为30秒。
邻居路由器根据收到的路由信息刷新自己的路由表。
RIP协议分为两个版本
共同特征
- 是距离向量路由协议
- 使用跳数作为度量值
- 默认路由更新周期为30秒
- 管理距离为120
- 支持触发更新
- 最大跳数为15跳
- 支持等价路径,默认4条,最大6条
- 使用UDP 520端口进行路由更新
两者区别
RIP路由协议的优缺点
优点
实现简单
开销较小
缺点
v1版本不支持可变长子网掩码
限制在16跳内,不适合大型网络
收敛速度慢
RIP解决路由环路的办法
- 计数到无穷大,每个节点都会维护从自身到每个可能的目的网络的距离。
解决办法:定义最大跳数(15跳)
- 路由环路,前往网络 10.4.0.0 的数据包在路由器B和 C 之间来回传递(环路)
解决办法:水平分割 (路由器从某个接口学习到路由,不会再从该接口发出去。)
- 路由环路的解决方案:路由毒化和毒性逆转
C:当4.0断开后,路由器将已经断开的路由的距离通告为无穷大。并立刻开启触发更新,向B发送更新包。
B:收到更新包后,将4.0路由标记为“可能已断开”,忽略水平分割,进行毒性逆转,向C发送路由信息,告诉C可能已断开。
- 路由环路的解决方案:抑制计时器
路由器为网络中的“可能有故障”状态保留条目,以便为其它路由器重新计算拓扑更改留出时间。
- 路由环路的解决方案:触发更新
路由表发生变化时,路由器发送更新。
RIP相关配置
RIP版本 1
配置思路:
首先将各个接口ip地址配上并开启。
Router rip 开启rip进程
Version 1 启用版本1
Network 11.0.0.0 宣告网段(路由器直连的都要宣告)
Show ip route 查看路由条目
RIP版本2
配置思路:
Router rip 开启rip
Version 2 启用版本2
No auto-summary 关闭自动汇总(RIP默认自动,如不关闭,会汇总到主类)
版本1 和版本2 兼容问题
版本1 和版本2 相互之间不能学习,需要经过相关配置。
配置思路:
先清空路由条目:clear ip route *
进入相应接口后配置
ip rip send version 1 表示发送到版本1的更新
ip rip receive version 1 表示接收版本1的更新
详细配置:
1.将R3改为version2
R3(config)#router rip
R3(config-router)#version 2
2.测试
先清空R1、R2,R3路由表,再查询
R2#clear ip route *
R2#sh ip route
此时,R1、R2无法学习到R3中私有的路由条目,同理R3无法学习到R1,R2私有的条目
3、解决兼容
设置R3接口接收version1信息、
R3(config)#int f0/0
R3(config-if)#ip rip receive version 1
测试:(仅仅R3可以接收R1,R2传来的路由条目,不发送自己的)
R2#clear ip route *
R2#sh ip route
R3#clear ip route *
R3#sh ip route
设置R3发送信息转换为version1
R3(config)#int f0/0
R3(config-if)#ip rip send version 1
测试:全通
在接口禁止运行RIP
其他配置都一样,主要是在禁止的接口上配置,这样就只能接收,不能发送了。
Router rip
Passive-interface fastethernet 0/0
RIPV2单播更新
在禁止RIP基础上进行配置。
在禁止的接口两边,宣告相邻网段。然后就可以学习到路由。
Router rip
Neighbor 12.1.1.2 宣告相邻网段
RIPV2手动汇总
配置思路:
首先要关闭自动汇总,然后手动汇总
Ip summary-address rip 1.1.0.0 255.255.0.0
详细配置:
首先no掉自动汇总
R1(config-router)#no auto-summary
R2(config-router)#no auto-summary
R3(config-router)#no auto-summary
检查路由表
可以看见回环地址没被汇总
现在进行手动汇总
在R3下配置:
R3(config)#int f0/0
R3(config-if)#ip summary-address rip 181.1.0.0 255.255.252.0
测试:查看R2、R1的路由表信息,地址汇总为:181.1.0.0/22
RIPV2默认路由
配置思路:
Router rip
Default-information originate 产生默认路由(推荐)
ip default-network 10.0.0.0 产生
详细配置:
1、确保能相互ping同
2、路由条目能相互学习
3、使用default-information originate产生
配置R3:
R3(config)#router rip
R3(config-router)#default-information originate
查看R1、R2、路由条目,会增加一条默认路由R*
RIPV2明文认证
配置思路:
Key chain yeslab 配置钥匙链的名字
Key 1 配置key 的id
Key-string cisco 配置密码
进入到相应接口
Ip rip authentication mode test 认证类型为明文
Ip rip authentication key-chain yeslab 调用钥匙链
然后连接的需要学习路由就需要配置对应的密码
详细配置:
1、确保能相互ping同
2、路由条目能相互学习
3、配置明文认证(R1、R2之间)
R1:
R1(config)#key chain test
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string 12345
R1(config)#int f0/0
R1(config-if)#ip rip authentication key-chain text
R1(config-if)#ip rip authentication key-chain test
R2:
R2(config)#key chain test
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string 12345
R2(config)#int f0/0
R2(config-if)#ip rip authentication key-chain text
R2(config-if)#ip rip authentication key-chain test
RIPV2 MD5认证
MD5与明文的差别在于认证类型的时候改成MD5
RIP过滤路由
思路:写访问控制列表拒绝或允许学习相应路由
in方向:
为了方便测试,我在R1添加了一个回环测试网络
R1#config
R1(config)#int loopback 0
R1(config-if)#ip add 11.1.1.1 255.255.255.0
R1(config)#router rip
R1(config-router)#network 11.1.1.1
然后,在R3上配置过滤:
首先,查看R3路由表,确保能正常学习
R3#config t
R3(config)#access-list 11 deny 11.1.1.1//拒绝该条路由
R3(config)#access-list 11 permit any//允许出拒绝的路由外的所有路由
R3(config)#router rip
R3(config-router)#distribute-list 11 in//调用访问控制列表11,in方向过滤
查看R3路由表,为学习到该条路由
我们再试试out方向
为了方便测试,我在R2添加了一个回环测试网络
R1#config
R1(config)#int loopback 0
R1(config-if)#ip add 22.1.1.1 255.255.255.0
R1(config)#router rip
R1(config-router)#network 22.1.1.1
查看R3路由表,确保正常学习到该路由
在R2设置过滤:
R2#config t
R2(config)#access-list 11 deny 11.1.1.1//拒绝该条路由
R2(config)#access-list 11 permit any//允许出拒绝的路由外的所有路由
R2(config)#router rip
R2(config-router)#distribute-list 11 out//调用访问控制列表22,out方向过滤
(即过滤该路由器传出去的信息,对其进行过滤)