详解路由策略与策略路由
在对路由的学习中,关于路由策略与策略路由的异同,很多学员不能把握两者间的区别与联系。本文拟对这两个概念进行介绍,希望能够得到更深的理解。
一、路由策略
我们知道,路由器要完成数据报文的转发,其依据是路由表。而路由表大多情况下是通过各种动态路由协议学习到的。不论何种路由协议,缺省情况下每台路由器都会将其所有的路由信息发布给其他的路由器。但在很多场景下,可能需要对路由器发布的路由信息进行人为干预,以控制路由信息的传播或影响路由选路。要完成这样的需求,就需要借助路由策略。
简单来说,我们可以根据某种需求,通过改变参数或者设置某种控制方式来改变路由的产生、发布、选择的结果,注意,改变的是结果(即路由表)。也就是说,路由策略会影响路由表。路由器则依然根据路由表进行数据报文转发。
需要注意的是,路由策略并不能够单独使用。在IGP路由协议中,路由策略常见于在不同的路由协议间做路由引入时使用;而在BGP协议中,路由策略随处可见,大多数BGP指令均支持路由策略。
二、策略路由
与路由策略不同,策略路由可以单独使用。其作用是人为干预数据报文的转发,而不是干预路由表的形成。
那么问题来了,路由器到底是根据路由表转发数据报文还是根据策略路由转发呢?
当路由器某接口配置了策略路由,那么从该接口进入的数据报文将会根据策略路由的if-match语句进行匹配,若匹配上,则无视已存在的路由表,直接依据策略路由的指示从指定接口或下一跳转发出去;若不匹配,则查路由表,根据路由表中的下一跳进行转发。
因此,策略路由影响的是数据报文的转发,与路由表没有直接关系。当存在策略路由,则按策略路由进行转发,否则按普通转发流程进行转发,即查找路由表。
三、联系与区别
联系:路由策略与策略路由都是为了转发数据报文而进行路径选择的策略,都是根据某种规则改变某些参数或控制手段来设置不同的转发路径。
区别:路由策略是根据一些规则,使用某种策略改变规则中影响路由发布、接收或路由选择的参数而改变路由表的内容。是在路由发现的时候产生作用。策略路由是尽管存在当前最优的路由,但是可以通过使用策略路由使数据报文不使用当前路由表中的转发路径而单独使用策略路由指定的转发路径。策略路由在数据包转发的时候发生作用、不会改变路由表中任何内容。策略路由的优先级比路由策略高,当路由器接收到数据包,并进行转发的时候,会优先根据策略路由的规则进行匹配,如果能匹配上,则根据策略路由来转发,否则按照路由表中转发路径来进行转发。
简单来说,路由策略是路由发现规则,策略路由是数据包转发规则。其实将“策略路由”理解为“转发策略”,这样更容易理解与区分。由于转发在底层,路由在高层,所以转发的优先级比路由的优先级高,这点也能理解的通。其实路由器中存在两种类型和层次的表,一个是路由表(routing-table),另一个是转发表(forwording-table)。转发表是由路由表映射过来的,策略路由直接作用于转发表,路由策略直接作用于路由表。
四、总结
网络通信的规则是先有路由,才有转发。路由策略由于仅仅在路由发现的时候产生作用,在路由表产生且稳定之后,如果网络拓扑不发生变化,路由表通常都不会变化,这时候,路由策略没有应用就不会占用资源。而策略路由是在转发的时候发生作用,路由器在初始产生路由表之后,基本工作量都在数据包转发上,如果没有策略路由,路由器只要分析每一个数据包的目的地址,再按路由表来匹配就可以决定下一跳;但是如果有策略路由,策略路由就一直处于应用状态,如果策略路由特别复杂,路由器要根据规则来判断数据包的源地址、协议或应用等附加信息,这样就会一直占用大量的资源,所以除非不得已,尽量使用路由策略,而不要使用策略路由。网络优化的时候需要考虑这一点,如果策略路由特别复杂,能通过将网络进行简单分解而达到取消策略路由的尽量进行分解,否则路由器负担很重。