点赞+关注,每日分享数通知识~
OSPF下发缺省路由有以下几种情况:
一、非条件产生
非条件产生,表示调用路由策略时不进行 if-match 匹配
1) 非强制下发
default-route-advertise route-policy test
非强制下发缺省路由,并修改缺省路由的属性
- 当路由器表中存在其他路由进程的缺省路由时,下发OSPF缺省路由,并通过route-poliy修改缺省路由的cost,tag,type 3个属性,如果路由表中不存在其他路由进程的缺省路由时不下发缺省路由;
- 如果route-policy中存在if-match语句,则不会产生缺省路由。
注意:不能进行if-match 匹配,否则缺省路由无法下发
2)强制下发
default-route-advertise alway route-policy test
强制下发缺省路由,并修改缺省路由的属性
- 始终产生缺省路由;
- 如果存在其他协议的缺省路由,则route-policy 生效,通过route-policy设置缺省路由的cost,tag,type 3个属性,此时如果route-policy中存在if-match语句,apply语句失效,按默认属性产生缺省路由;
3.如果路由表中不存在其他路由进程的缺省路由时,还是按默认属性下发缺省路由,但route-policy不生效,不管有没有if-match语句。
二、条件产生
条件产生,表示调用路由策略时需要进行 if-match 匹配
1)非强制下发
default-route-advertise route-policy test match-any
- 只要路由表中存在满足route-policy的路由,就下发缺省路由,并可以修改缺省路由的cost,tag,type 属性;
- 不要求路由表中存在其他进程的缺省路由;
- 当route-policy中存在多条if-match语句,语句间是逻辑与的关系,即条件路由必须匹配所有if-match语句。if-match可以匹配路由条目,路由cost,路由开销类型,路由下一跳,路由tag等等。
举例:
route-policy test permit node 10
if-match ip-prefix test 即存在1.1.1.0/24路由
if-match cost 7 并且1.1.1.0/24 cost为7,才满足条件
apply cost 100
apply cost-type type-1
apply tag 100
ip ip-prefix test index 10 permit 1.1.1.0 24
- 当route-polioy中的引入ACL或ip-prefix定义了多条条件路由时,只要一个条件存在即下发缺省路由,当条件路由都失效时不再下发缺省路由。
route-policy test permit node 10
if-match ip-prefix test
if-match cost 7
apply cost 100
apply cost-type type-1
apply tag 100
ip ip-prefix test index 10 permit 1.1.1.0 24
ip ip-prefix test index 10 permit 1.1.2.0 24
只要两个if-match语句各自有一个匹配的条件存在,即下发缺省路由,比如1.1.1.0 /24存在,但1.1.2.0 /24失效,但只要1.1.1.0 /24 开销等7,也满足条件;如果1.1.1.0 /24和1.1.2.0 /24都存在,只要其中一条路由 cost 等于7 也满足条件。
- 当多个node存在apply语句,按以下规则确定缺省路由属性:
route-policy test permit node 10
if-match ip-prefx 1
apply cost-type 2
apply cost 5
apply tag 100
route-policy test permit node 20
if-match ip-prefix 2
apply cost 10
apply cost-type type-2
apply tag 50
如果条件满足多个Node语句,缺省路由属性的生效机制:
- cost-type 1的node语句优先被使用;
- cost-type 相同,则cost值小的node语句优先被使用;
- cost值相同,则tag值小的node语句优先被使用。
注意:没有always参数,只要满足条件就下发缺省,不满足条件就不下发
2)强制下发
default-route-advertise always route-policy test match-any
-
当路由表中存在其他进程的缺省路由时,下发缺省路由,只有当条件路由满足irmatch语句,才能修改tag,cost,type属性,否则无法修改。if-match语句决定了apply语句是否生效,不决定缺省路由是否下发;
-
当路由表中不存在其他进程的缺省路由时,下发缺省路由,只有当条件路由满足if-match语句,才能修改tag,cost,type属性,否则无法修改。
总结:总是下发缺省路由,如果满足if-match语句 则根据apply语句对缺省路由的属性做修改,如果不满足if-match语句,则按缺省路由默认属性下发缺省路由。