概述

动态路由协议是路由器之间用来交换信息的语言,通过度量值来选择路由,所有配置动态路由的设备必须使用同一种协议。

  • 动态路由的特点

    1. 减少了管理任务(不再需要手动配置路由)
    2. 额外占用网络带宽
  • 度量值

    • 跳数、带宽、负载、时延、可靠性、成本
  • 收敛

    • 使所有路由表都达到一致状态的过程
  • 按照路由执行的算法分类

    1. 距离矢量路由协议
    • 依据从源网络到目标网络所经过的路由器的个数选择路由
    • RIP、IGRP
    1. 链路状态路由协议
    • 综合考虑从源网络到目标网络的各条路径的情况选择路由
    • OSPF、IS-IS

一般不太复杂并且拓扑不经常变动的网络可以使用静态路由,稳定且不会额外占用网络带宽,反之则使用动态路由(运营商就是使用的动态路由协议)


动态路由协议

RIP协议

  • RIP协议的基本概念
    • 定期更新(默认每30秒,端口号520,使用UDP协议)
    • 邻居
    • RIP度量值为跳数,最大跳数为15跳,16跳为unreachable
    • 广播更新(是指通过路由器端口发送数据包,而不是狭义上的数据帧广播)
    • 全路由表更新

在上图中,Metric字段表示跳数,直连路由C为0,R表示动态路由(RIP协议的简称)。当R2学习R1的路由表时,R1通过20.0.0.1这个端口发送的数据包,R2会将学习到的路由表中的条目的Next hop字段设置为此数据包的源IP,并且将Metric字段加1。(学习任何条目都要加1,因为是从相邻的路由器学习到的)

在RIP协议中,每次更新周期不会发送将要学习的路由表,在第一次更新周期时,R1无法学习到R3的路由表,因为R2还没有学习完成,R1只能学习到R2的路由表,在下一次更新周期中才会学习到R2已经学习到的R3的路由条目


上图为第二次更新周期(60秒)完成后的路由表状态。黑色部分新加入条目为第一次更新后加入的,蓝色的则为第二次更新周期后加入的。R1中学习到的R3的路由表Metric为2,是先由R2学习R3后将Metric字段加1,然后R1又学习到再加1得到的


全路由表更新会造成路由环路,RIP协议默认使用水平分割阻止路由环路的发生。从一个接口学习到的路由信息,不再从这个接口发送出去。同时也能减少路由更新信息占用的链路带宽资源。

命令

1
2
3
4
5
6
7
8
9
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#router rip
Router(config-router)#version 2;版本号1/2选1,但须一致,一般选2
Router(config-router)#network 10.0.0.0;激活接口
Router(config-router)#network 20.0.0.0
Router(config-router)#no auto-summary
Router(config-router)#exit

v1版本在传输路由表时是不带子网掩码的,假设R1从R2学习到一个10.1.1.0/24的路由条目,由于没有子网掩码,R1会将这个IP地址作为10.0.0.0/8的默认A类地址。如果同时有2个条目分别来自10.1.1.1/24和10.2.2.0/24,并且他们的管理距离值和度量值都一样,这时会出现冲突,同时存在2个路由条目,指向不同的方向。

v2版本是携带子网掩码的,可以解决以上的问题,但学习到路由条目时会自动将其汇总为默认的A类IP地址(或者其他类型),此时可以使用no auto-summary命令取消汇总


关于RIP配置网络号不带子网掩码

由于RIP协议具有有类别路由选择的特性,从而在网络边界上会出现子网屏蔽的情形,这意味着network命令中不需要指定子网,仅仅需要指定相应的A类、B类、C类主网络地址。任何一个接口,只要它的配置地址属于network命令指定网络,都会运行RIP。

RIP只支持classful网络宣告。这个意思是RIP以主类网络来发布网段,不管你network后面跟的是什么,它都给你划到主类网络中去的。例如network 1.1.1.1 ,实际有效的show run 中会显示1.0.0.0 ;再如network 172.16.18.0  实际有效的是172.16.0.0