路由器可以同时运行多种路由协议。每种路由协议都有自己衡量路由优劣的标准。针对每一个目的前缀,一种路由协议只会输出一条它认为最优的路由。当多种路由协议并行运行时,控制平面就有可能针对同一个目的前缀,从不同路由协议收集多条路由信息。而对于路由器的数据平面而言,它只会针对每一条前缀记录一条最优的路由信息。虽然每种路由协议都有自己的度量值,但是不同协议间的度量值含义不同,也没有可比性。因此,对于路由器而言,必须预先定义优先级策略,以便控制平面能够按照策略从多条备选路由中选择出一条最优路由,下发到数据平面,供线卡转发数据时使用。负责路由汇总、优先级处理以及路由下发的单元称为路由管理单元。
实际的应用中,路由器厂商会预先为不同的路由协议赋予不同的路由优先级,数值小的优先级高。对于路由管理单元而言,当到达同一个网络存在多条路由时,应根据优先级的大小,选定优先级数值最小的作为最优路由,并将这条路由写进路由表,下发到数据平面。
需要注意的是,不同厂商之间的定义可能不一样,除了直连路由外,其他各种路由协议的优先级都可由用户通过特定的命令手工进行修改。另外,每条静态路由的优先级都可以不相同。思科、华为、新华三以及开源路由套件FR Routing的各类型路由的优先级默认值示例见表1.1。路由优先级是由管理员设置和改变的,因此,也被称为路由的管理距离。
表1.1 各类型路由的优先级默认值示例
不同厂商对路由优先级的默认值设置不一样,在具体网络配置过程中会造成一定的迷惑性。例如,如果网络同时部署了思科和华为的路由器,且路由都采用默认优先级设置。网络在运行OSPF协议的同时,管理员希望针对某个目的网络配置静态路由以改变数据路径,在思科路由器中静态路由优于OSPF路由,而在华为路由器中OSPF路由优于静态路由,这个时候优先级的不同就会导致路由配置不能达到预期目标。