在传统网络中,路由设备根据报文的目的地址查找路由表,并依据路由表信息转发报文。但是在越来越复杂的网络应用当中,用户希望路由设备在传统路由转发基础上提供更精细、更多样的流量控制功能。
路由策略是一种改变报文转发路径或路由信息(包括路由属性、下一跳、转发接口、优先级等)的策略集,通常通过过滤列表和路由图进行实现。路由策略为不同路由协议提供服务,通过指定的策略集,完成路由信息的策略控制。PBR(Policy Based Route,策略路由)是基于策略的路由转发,其可以依据源地址、目的地址、报文长度和端口等转发报文,而这些匹配策略则可以由路由策略提供。
路由策略的应用灵活广泛,主要有以下几种方式:
在路由协议中引用过滤列表,可以过滤路由信息或修改路由信息。
在路由协议中引用路由图,可以过滤路由信息或修改路由信息,其中路由图可以进一步引用过滤列表。
在策略路由中引用路由图,可以控制报文转发或修改报文字段。
说明
本章使用“路由器”指支持路由功能的网络设备。这些网络设备可以是三层交换机、路由器、防火墙等。
过滤列表是根据某种路由属性定义的一组列表,是路由策略进行过滤的工具。单独配置过滤列表没有任何作用,只有在路由协议或者路由图中应用这些过滤列表,才能达到路由过滤的效果。目前过滤列表包含五种类型,分别是:访问控制列表、地址前缀列表、自治域路径过滤列表、团体属性过滤列表和扩展团体属性过滤列表。
访问控制列表(ACL)
访问控制列表(ACL)包括IPv4和IPv6的ACL,用户定义访问控制列表时可以指定IPv4/IPv6地址和掩码,用于匹配路由信息的目的网段或下一跳地址。
地址前缀列表(Prefix-List)
地址前缀列表的作用类似于访问控制列表,包括IPv4地址前缀列表和IPv6地址前缀列表,同样用于匹配路由信息的目的网段或下一跳。
用户配置地址前缀列表作为过滤列表时,可以定义前缀地址、掩码长度和掩码范围。其中,前缀地址和掩码长度用于指定路由信息的前缀。掩码范围则指定待过滤路由信息的掩码范围,即地址前缀列表可以直接指定过滤某个前缀网段下的子网段,不需要事先计算该子网段的前缀,配置相比访问控制列表更灵活。
自治域路径过滤列表(AS-Path)
自治域路径过滤列表仅用于BGP,是基于自治域路径信息的过滤规则。用户定义自治域路径过滤列表时可以定义自治域路径,使用正则表达式指定,用于匹配自治域路径。
团体属性过滤列表(Community-List)
团体属性过滤列表仅用于BGP,是基于路由团体属性的过滤规则。用户定义团体属性过滤列表时,使用团体号或者正则表达式指定,用于匹配团体属性域。
扩展团体属性过滤列表仅用于BGP,是基于路由扩展团体属性的过滤规则。用户定义扩展团体属性过滤列表时,使用扩展团体号或者正则表达式指定,用于匹配扩展团体属性域。
路由图中的一条策略是一个由Match和Set组成的语句,表示“如果匹配某些条件,则执行某些处理动作”。
路由图主要应用场景
路由过滤:在路由协议中引用过滤列表,过滤其发送或接收的路由信息。
路由重分布:在路由协议中引用路由图,可以过滤路由信息或修改路由信息,例如将RIP路由重分布到OSPF中,要求只重分布跳数为4的RIP路由。
策略路由:在策略路由中引用路由图,可以控制报文转发或修改报文字段,为来自不同子网的报文。分别指定优选出接口。
策略的执行
一个路由图中可以包含多条策略。每条策略都有对应的序号(Sequence),序号越小优先级越高。策略按序号顺序依次执行,一旦满足某条策略的匹配条件,就执行该策略对应的处理动作,并退出路由图。如果不满足任何一条策略的匹配条件,则不做任何处理。
策略的工作模式
策略有以下两种工作模式:
permit(允许):当满足策略的匹配条件时,执行该策略对应的处理动作,并退出路由图。
deny(拒绝):当满足策略的匹配条件时,不执行该策略对应的处理动作,并退出路由图。
策略的匹配条件
策略的匹配条件包含0条、1条或多条Match规则。
如果包含0条Match规则,则无条件匹配所有报文。
如果包含1条或多条Match规则,则必须同时匹配所有Match规则,才能满足策略的匹配条件。
策略的处理动作
策略的处理动作包含0条、1条或多条Set规则。
如果包含0条Set规则,则不做任何处理,直接退出路由图。
如果包含1条或多条Set规则,则执行所有处理动作后,退出路由图。
路由策略配置任务如下:
配置过滤列表,以下所有配置任务均为可选配置,请根据实际情况选择配置。
创建AS路径过滤规则
创建团体属性列表
创建扩展团体属性列表
创建IPv4前缀列表
创建IPv6前缀列表
配置路由图
创建策略
配置策略的匹配条件
配置策略的处理动作
(可选)配置策略申明
定义一组路由过滤规则,供路由协议使用。
过滤列表的配置必须关联路由协议应用才能够实际生效。
配置过滤列表配置任务如下,以下配置任务均可选,请根据需求选择配置。
创建AS路径过滤规则
创建团体属性列表
创建扩展团体属性列表
创建IPv4前缀列表
创建IPv6前缀列表
AS路径过滤列表使用正则方式定义过滤规则。AS-Path是BGP属性,AS路径过滤规则仅应用于BGP网络。
进入特权模式。
enable
进入全局配置模式。
configure terminal
定义AS路径过滤规则。
ip as-path access-list path-list-number { permit | deny } regular-expression
缺省情况下,不存在AS路径过滤规则。
团体是一组有相同特征的路由集合,团体属性是BGP的属性,可以降低BGP路由管理维护的难度。和ACL类似,团体属性列表可以定义多个表项,按照序号顺序进行匹配。只要有一个表项匹配了路由,则通过团体属性列表,不再进行后续匹配。
进入特权模式。
enable
进入全局配置模式。
configure terminal
定义标准团体属性列表。
ip community-list { community-list-number | standard community-list-name } { deny | permit } [ community-list-number | gshut | internet | llgr-stale | local-AS | no-advertise | no-export | no-llgr ] *
缺省情况下,未定义标准团体列表。
定义扩展团体属性列表。
ip community-list { community-list-number | expanded community-list-name } { deny | permit } [ regular-expression ]
缺省情况下,未定义扩展团体列表。
扩展团体是一组有相同特征的路由集合,扩展团体属性是BGP的属性,可以降低BGP路由管理维护的难度。和ACL类似,扩展团体属性列表可以定义多个表项,按照序号顺序进行匹配。只要有一个表项匹配了路由,则通过扩展团体属性列表,不再进行后续匹配。
进入特权模式。
enable
进入全局配置模式。
configure terminal
定义标准类型的扩展团体属性列表。
ip extcommunity-list { standard-list | standard list-name } { deny | permit } [ rt rt-value | soo soo-value ]
缺省情况下,未定义标准类型的扩展团体属性列表。
定义扩展类型的扩展团体属性列表。
ip extcommunity-list { expanded-list | expanded list-name } { deny | permit } [ regular-expression ]
缺省情况下,未定义扩展类型的扩展团体属性列表。
IPv4前缀列表可以直接被各个协议使用,也可以作为路由图的匹配条件,配合路由图使用。和ACL类似,IPv4前缀列表可以定义多个表项,按照序号顺序进行匹配。只要有一个表项匹配了路由,则通过IPv4前缀列表,不再进行后续匹配。如果路由没有被任何表项匹配,则认为没有通过IPv4前缀列表。
建议为IPv4前缀列表添加文字描述,如描述IPv4前缀列表的业务目的等。为IPv4前缀列表添加描述方便维护与追溯。
该命令不属于路由策略系列的命令,不会应用于路由协议。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建一个IPv4前缀列表。
ip prefix-list prefix-list-name [ seq seq-number ] { deny | permit } ipv4-prefix [ ge minimum-prefix-length ] [ le maximum-prefix-length ]
缺省情况下,不存在IPv4前缀列表。
(可选)为IPv4前缀列表添加文字描述式。
ip prefix-list prefix-list-name description description-text
缺省情况下,不存在IPv4前缀列表文字描述。
(可选)开启IPv4前缀列表排序功能。
ip prefix-list sequence-number
缺省情况下,使用show ip prefix-list时,不会显示前缀列表表项序列号。在对IPv4前缀列表执行插入或者删除操作时,显示IPv4前缀列表表项序号方便管理员直观的明确新插入或者删除IPv4前缀列表序列号值。
前缀列表可以直接被各个协议使用,也可以作为路由图的匹配条件,配合路由图使用。和ACL类似,前缀列表可以定义多个表项,设备按照序号顺序进行匹配,只要有一个表项匹配了路由,则通过前缀列表,不再进行后续匹配。如果路由没有被任何表项匹配,则认为没有通过前缀列表。
建议为前缀列表添加文字描述,如描述前缀列表的业务目的等。为前缀列表添加描述方便维护与追溯。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建一个IPv6前缀列表。
ipv6 prefix-list prefix-list-name [ seq seq-number ] { deny | permit } ipv6-prefix [ ge minimum-prefix-length ] [ le maximum-prefix-length ]
缺省情况下,不存在IPv6前缀列表。
(可选)为一个IPv6前缀列表添加文字描述。
ipv6 prefix-list prefix-list-name description descripton-text
缺省情况下,不存在IPv6前缀列表文字描述。
(可选)开启IPv6前缀列表排序功能。
ipv6 prefix-list sequence-number
缺省情况下,使用show ipv6 prefix-list时,不会显示前缀列表表项序列号。在对前缀列表执行插入或者删除操作时,显示前缀列表表项序号方便管理员直观的明确新插入或者删除前缀列表序列号值。
定义一组路由策略,供路由协议或策略路由使用。
路由图配置任务如下:
创建策略
配置策略的匹配条件
配置策略的处理动作
(可选)配置策略申明
对路由属性进行控制,创建路由图。
如果此路由图尚不存在,则此命令创建路由图,并添加一条策略。
如果此路由图已经存在,则此命令只添加一条策略。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建路由图,并进入路由图配置模式。
route-map route-map-name [ { permit | deny } sequence ]
路由图中根据路由的属性配置Match规则。如果配置了多条Match规则,则必须同时匹配全部Match规则。
如果match命令中引用ACL来定义报文匹配条件,则必须配置此ACL。
不能同时配置的match命令有:
不能同时配置的match命令
match命令 |
互斥match命令 |
---|---|
match ip address |
match ip prefix-list |
match ipv6 address |
match ipv6 prefix-list |
match ip next-hop |
match ip next-hop prefix-list |
match ipv6 next-hop |
match ipv6 next-hop prefix-list |
match ip route-source |
match ip route-source prefix-list |
match ipv6 route-source |
match ipv6 route-source prefix-list |
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入路由图配置模式。
route-map route-map-name [ { permit | deny } sequence ]
缺省情况下,未配置任何出接口匹配规则。
使用IPv4过滤列表进行属性匹配。以下配置均可选,允许同时配置多条Match规则,匹配时则需要匹配全部Match规则。
匹配访问列表或前缀列表中允许的目标网络路由。
match ip address { { acl-name | acl-number } &<1-6> | prefix-list prefix-list-name&<1-6> }
缺省情况下,未配置访问控制列表或者前缀列表匹配规则。
匹配下一跳IPv4地址符合访问列表或前缀列表规则的目标网络路由。
match ip next-hop { { acl-name | acl-number } &<1-6> | prefix-list prefix-list-name&<1-6> }
缺省情况下,未配置路由下一跳IPv4地址匹配规则。
匹配路由源IPv4地址符合访问列表或前缀列表规则的目标网络路由。
match ip route-source { { acl-name | acl-number } &<1-6> | prefix-list prefix-list-name&<1-6> }
缺省情况下,未配置IPv4路由源地址匹配规则。
使用IPv6过滤列表进行属性匹配。以下配置均可选,允许同时配置多条Match规则,匹配时则需要匹配全部Match规则。
匹配访问列表或前缀列表中允许的目标IPv6网络路由。
match ipv6 address { acl-name | prefix-list prefix-list-name }
缺省情况下,未配置IPv6访问控制列表或者IPv6前缀列表匹配规则。
匹配下一跳IPv6地址符合访问列表或前缀列表规则的目标网络路由。
match ipv6 next-hop { acl-name | prefix-list prefix-list-name }
缺省情况下,未配置路由下一跳IPv6地址匹配规则。
匹配路由源IPv6地址符合访问列表或前缀列表规则的目标网络路由。
match ipv6 route-source { acl-name | prefix-list prefix-list-name }
缺省情况下,未配置IPv6路由源地址匹配规则。
配置BGP属性过滤列表。
匹配AS_PATH属性。
match as-path as-path-acl-list-number&<1-10>
缺省情况下,未配置任何AS_PATH属性列表匹配规则。
匹配团体属性列表。
match community { community-list-number [ exact-match ] | community-list-name [ exact-match ] } &<1-6>
缺省情况下,未配置任何团体属性匹配规则。
匹配扩展团体属性列表。
match extcommunity extcommunity-list
缺省情况下,未配置任何扩展团体属性匹配规则。
匹配固定长度的IP数据包。
match length min-length max-length
缺省情况下,未配置IP数据包长度匹配规则。
匹配固定度量值的路由。
match metric metric
缺省情况下,未配置度量值匹配规则。
匹配路由类型。
匹配BGP路由的来源类型。
match origin { egp | igp | incomplete }
缺省情况下,未配置BGP路由的来源匹配规则。
匹配路由类型。
match route-type { connect | evpn-type-1 | evpn-type-2 | evpn-type-3 | evpn-type-4 | evpn-type-5 | external [ type-1 | type-2 ] | internal | level-1 | level-2 | local | nssa-external [ type-1 | type-2 ] | rip | static } *
缺省情况下,未配置路由类型匹配规则。
匹配带指定路由标记的路由。
match tag tag&<1-4>
缺省情况下,未配置路由标签匹配规则。
对Match规则匹配的流量配置处理动作,设备提供了丰富的set命令,可以配置灵活的处理动作。
如果未配置Set规则,则不做任何处理。
如果配置了多条Set规则,则需执行全部Set规则(如果Set规则有优先级关系,则仅优先级最高者生效)。
不能同时配置的set命令有
不能同时配置的set命令
set命令 |
互斥set命令 |
---|---|
set next-hop |
set vrf |
set ip next-hop |
set ip next-hop verify-availability |
set ip dscp |
set ip tos |
set ip dscp |
set ip precedence |
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入路由图配置模式。
route-map route-map-name [ { permit | deny } sequence ]
配置调整BGP的各类属性。
配置BGP的AS属性值。
set aggregator as as-number ipv4-address
缺省情况下,未指定聚合者的AS属性。
配置EGP的AIGP属性值。
set aigp-metric { metric-number | igp-metric }
缺省情况下,未配置路由的AIGP权重属性。
配置增加指定的AS_PATH属性值。
set as-path prepend as-number&<1-10>
缺省情况下,未配置路由的AS_PATH属性。
配置替换路由的AS_PATH属性。
set as-path replace as-number&<1-10>
缺省情况下,未配置替换路由的AS_PATH属性。
配置路由ATOMIC-AGGREGATE属性。
set atomic-aggregate
缺省情况下,未配置路由ATOMIC-AGGREGATE属性。
配置删除BGP路由Community_List中的所有的COMMUNITY属性值。
set comm-list { community-list-number | community-list-name } delete
缺省情况下,未配置删除Community_List中的所有的COMMUNITY属性值。
配置BPG路由的COMMUNITY属性值。
set community { { community-number&<1-32> | internet | llgr-stale | local-AS | no-advertise | no-export | no-llgr | none } * [ additive ] }
缺省情况下,未配置路由的指定COMMUNITY属性值。
配置BGP路由的振荡参数。
set dampening half-life reuse suppress max-suppress-time
缺省情况下,半衰期15分钟,路由的惩罚值低于750时,路由抑制解除。路由惩罚值超过2000时,路由被抑制。路由能被抑制的最长时间为60分钟。
配置删除BGP路由的扩展团体属性。
set extcomm-list { extcommunity-list-number | extcommunity-list-name } delete
配置BPG路由的扩展团体属性。
set extcommunity { rt extend-community-value | soo extend-community-value }
配置下一跳信息。
配置路由默认下一跳IPv4地址。
set ip default next-hop { ipv4-address [ weight ] }&<1-32>
缺省情况下,对匹配路由不指定默认下一跳IPv4地址。
配置路由下一跳IPv4地址。
set ip next-hop { ipv4-address [ weight ] }&<1-32>
缺省情况下,对匹配数据不指定下一跳IPv4地址。
配置指定路由下一跳IPv4地址。
set next-hop ipv4-address
缺省情况下,对匹配路由不指定下一跳IPv4地址。
配置指定IPv6报文默认的下一跳IPv6地址。
set ipv6 default next-hop { ipv6-address [ weight ] }&<1-32>
缺省情况下,对匹配IPv6路由不指定默认下一跳IPv6地址。
配置指定IPv6报文下一跳IPv6地址。
set ipv6 next-hop { ipv6-address [ weight ] }&<1-32>
配置BGP IPv4路由指定下一跳为自身。
set ip next-hop self
缺省情况下,对匹配数据不指定下一跳为自身。
配置BGP IPv4路由指定下一跳不变。
set ip next-hop unchanged
缺省情况下,对匹配数据不指定下一跳不变。
配置BGP IPv4和IPv6路由指定下一跳为自身。
set next-hop self
缺省情况下,对匹配路由不指定下一跳地址为自身。
配置BGP IPv4和IPv6路由指定下一跳不变。
set next-hop unchanged
缺省情况下,对匹配路由不配置下一跳不变。
配置BGP IPv6路由下一跳为自身。
set ipv6 next-hop self
缺省情况下,对匹配IPv6路由不指定下一跳地址为自身。
配置BGP IPv6路由下一跳不变。
set ipv6 next-hop unchanged
缺省情况下,对匹配IPv6数据不指定下一跳不变。
配置数据包递归下一跳IPv4地址。
set ip next-hop recursive ipv4-address
缺省情况下,对匹配数据不指定递归下一跳IPv4地址。
配置递归下一跳IPv6地址。
set ipv6 next-hop recursive ipv6-address
缺省情况下,对匹配IPv6数据不指定递归下一跳IPv6地址。
配置下一跳IPv4地址的可达性。
set ip next-hop verify-availability ipv4-address [ weight ]{ track track-obj-number | bfd interface-type interface-number gateway }
缺省情况下,对匹配数据不检查下一跳IPv4地址的可达性。
配置检查下一跳IPv6地址的可达性。
set ipv6 next-hop verify-availability ipv6-address [ weight ] bfd interface-type interface-number gateway
缺省情况下,对匹配数据不检查下一跳IPv6地址的可达性。
配置流控参数。
配置IPv4头的优先级。
set ip precedence { precedence | critical | flash | flash-override | immediate | internet | network | priority | routine }
缺省情况下,对匹配报文不配置IPv4头优先级。
配置IPv6头的优先级。
set ipv6 precedence { precedence-number | critical | flash | flash-override | immediate | internet | network | priority | routine }
缺省情况下,对匹配报文不配置IPv6头优先级。
配置报文IPv4头的TOS值。
set ip tos { tos-number | max-reliability | max-throughput | min-delay | min-monetary-cost | normal }
缺省情况下,对匹配报文未配置IP头的TOS值。
配置IPv4报文中的DSCP值。
set ip dscp dscp_value
缺省情况下,对匹配路由不配置IPv4报文中的DSCP值。
配置路由QoS ID属性。
set qos-id qos-id
缺省情况下,对匹配路由不指定QoS ID属性。
配置LOCAL_PREFERENCE值。
set local-preference precedence-number
缺省情况下,对匹配路由不配置LOCAL_PREFERENCE值。
配置重分布相关信息。
配置重分发路由导入的目标区域类型。
set level { backbone | level-1 | level-1-2 | level-2 | stub-area }
缺省情况下,对匹配路由不指定要导入的目标区域类型。
配置路由标记。
set tag tag
缺省情况下,对匹配路由不配置路由标记。
配置权重、度量值与类型。
配置路由管理距离。
set distance distance-number
缺省情况下,对匹配路由未修改其管理距离。
配置路由度量值。
set metric { + metric-value | - metric-value | metric-value }
缺省情况下,对匹配路由不修改其度量值。
配置路由的度量值类型。
set metric-type { external | internal | type-1 | type-2 }
配置BGP路由配置权重值。
set weight weight-number
缺省情况下,对匹配路由不配置权重值。
配置路由来源信息。
配置路由来源属性。
set origin { egp | igp | incomplete }
缺省情况下,对匹配路由不指定路由来源属性。
配置路由源发者地址。
set originator-id ipv4-address
缺省情况下,对匹配路由不配置路由源发者地址。
配置路由在指定的VRF路由表进行选路。
set vrf vrf-name
缺省情况下,对匹配报文不指定的VRF路由表进行选路。
和前缀列表中提到的Description类似,Statement可以配置对路由图的描述说明。
该命令不属于路由策略系列的命令,不会应用于路由协议;
仅在OPENCONF YANG中生效,用于记录路由图的声明名称;
未配置的情况下,使用路由图的序号作为默认的路由图声明名称,因此statement-name会预留出路由图序号取值范围为0~65535,作为默认配置范围。在配置范围内,除了statement-name所在的路由图的序号,不能占用其他序号(这些序号是预留给同名称子路由图作为默认申明内容)。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入路由图配置模式。
route-map route-map-name [ { permit | deny } sequence ]
配置路由图的声明名称。
statement-name [ name ]
缺省情况下,声明名称为路由图的序号。
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
路由策略监视与维护
作用 |
命令 |
---|---|
查看路由图的配置信息 |
show route-map [ route-map-name ] |
查看访问控制列表的配置信息 |
show access-lists [ acl-id | name ] |
查看IPv4地址前缀列表的配置信息 |
show ip prefix-list [ prefix-name ] |
查看当前运行的IPv4路由协议状态信息 |
show ip protocols [ vrf vrf-name ] [ bgp | isis | ospf | rip ] |
查看IPv6地址前缀列表的配置信息 |
show ipv6 prefix-list [ prefix-name ] |
查看自治域路径过滤列表列表的配置信息 |
show ip as-path-access-list [ as-path-access-list-number ] |
查看团体属性过滤列表的配置信息 |
show ip community-list [ community-list-number | community-list-name ] |
查看扩展团体属性过滤列表的配置信息 |
show ip extcommunity-list [ extcommunity-list-number | extcommunity-list-name ] |
RIP路由域和OSPF路由域需要相互交换路由,实现全网互通。
将RIP路由重分布到OSPF中,跳数过高的路由被认为是不可靠的,所以要求只重分布跳数为4的RIP路由。在OSPF路由域中,路由类型为外部路由Type-1,路由标记值设为40。
将OSPF路由重分布到RIP中,要求只重分布标记为10的OSPF路由。在RIP路由域中,该路由的初始量度值设为10。
路由重分布中应用路由图组网图
配置路由图redrip:匹配跳数为4的路由;配置路由的初始量度值为40,路由类型为外部路由type-1,路由标记值设为40。
配置路由图redospf:匹配标记为10的路由;配置路由的初始量度值为10。
配置将RIP路由重分布到OSPF中,应用路由图redrip。
配置将OSPF路由重分布到RIP中,应用路由图redospf。
配置接口IP,完成OSPF和RIP基础配置。(略)
配置OSPF中重分发路由的策略。跳数为4的路由,路由开销类型为Type-1,标记为40。
Device A> enable
Device A# configure terminal
Device A(config)# route-map redrip permit 10
Device A(config-route-map)# match metric 4
Device A(config-route-map)# set metric-type type-1
Device A(config-route-map)# set tag 40
Device A(config-route-map)# exit
配置RIP中重分发路由的策略,路由标记为10的路由,开销为10跳。
Device A(config)# route-map redospf permit 10
Device A(config-route-map)# match tag 10
Device A(config-route-map)# set metric 10
Device A(config-route-map)# exit
OSPF中重分发RIP路由,并使用路由图redrip进行路由控制。
Device A(config)# router ospf 1
Device A(config-router)# redistribute rip subnets route-map redrip
Device A(config-router)# exit
RIP中重分发OSPF路由,并使用路由图redospf进行路由控制。
Device A(config)# router rip
Device A(config-router)# redistribute ospf 1 route-map redospf
Device A(config-router)# exit
# 检查Device A路由图配置信息,确认策略规则。
Device A# show route-map
route-map redrip, permit, sequence 10
Match clauses:
metric 4
Set clauses:
metric 40
metric-type type-1
tag 40
route-map redospf, permit, sequence 10
Match clauses:
tag 10
Set clauses:
metric 10
# 检查Device A OSPF路由信息库,确认符合策略规则的路由被重分布。
Device A# show ip ospf database external
OSPF Router with ID (192.100.1.9) (Process ID 1)
AS External Link States
LS age: 5
Options: 0x2 (-|-|-|-|-|-|E|-)
LS Type: AS-external-LSA
Link State ID: 192.168.199.0 (External Network Number)
Advertising Router: 192.100.1.9
LS Seq Number: 80000001
Checksum: 0x554d
Length: 36
Network Mask: /24
Metric Type: 1
TOS: 0
Metric: 4
Forward Address: 0.0.0.0
External Route Tag: 40
Device A的配置文件。
!
route-map redrip permit 10
match metric 4
set metric-type type-1
set tag 40
!
route-map redospf permit 10
match tag 10
set metric 10
!
router ospf 1
redistribute rip route-map redrip subnets
!
router rip
redistribute ospf 1 route-map redospf
!
公司网络存在双出口,为主备关系。随着公司规模扩大,主链路在高峰期存在带宽不足的问题。信息部在不进行主链路带宽扩容情况下,利用备份链路带宽资源满足业务需要。
在出口设备上配置策略路由,使公司流量分担到两个出口中,并且两个出口互为备份,分流规则如下:
来自子网1(200.24.16.0/24)的报文,优先从GE0/1接口发出。
来自子网2(200.24.17.0/24)的报文,优先从GE0/2接口发出。
策略路由中应用路由图组网图
配置两个不同的ACL,分别用来匹配子网1和子网2。
配置路由图RM_FOR_PBR:策略10实现“来自子网1的报文,优先从GigabitEthernet 0/1接口发出”;策略20实现“来自子网2的报文,优先从GigabitEthernet 0/2接口发出”。
配置策略路由,对GigabitEthernet 0/3接口收到的报文应用路由图RM_FOR_PBR。
配置策略路由在多个下一跳之间实现冗余备份。
配置接口IP,实现网络互通。(略)
配置ACL规则,分别匹配网段200.24.16.0/24和200.24.17.0/24。
Device> enable
Device# configure terminal
Device(config)# access-list 1 permit 200.24.16.0 0.0.0.255
Device(config)# access-list 2 permit 200.24.17.0 0.0.0.255
配置路由策略RM_FOR_PBR,200.24.16.0的下一跳为200.24.18.1,备份下一跳为200.24.19.1;200.24.17.0的下一跳为200.24.19.1,备份下一跳为200.24.18.1。
Device(config)# route-map RM_FOR_PBR 10
Device(config-route-map)# match ip address 1
Device(config-route-map)# set ip next-hop 200.24.18.1Device(config-route-map)# set ip next-hop 200.24.19.1
Device(config-route-map)# exit
Device(config)# route-map RM_FOR_PBR 20
Device(config-route-map)# match ip address 2
Device(config-route-map)# set ip next-hop 200.24.19.1
Device(config-route-map)# set ip next-hop 200.24.18.1
Device(config-route-map)# exit
接口GigabitEthernet 0/3上生效路由图RM_FOR_PBR,并开启负载均衡选路。
Device(config)# interface GigabitEthernet 0/3Device(config-if-GigabitEthernet 0/3)# ip policy route-map RM_FOR_PBR
Device(config-if-GigabitEthernet 0/3)# exit
Device(config)# ip policy redundance
# 检查策略路由配置信息,确认接口上应用了路由图。
Device# show ip policy
Balance mode: redundance
Interface Route map
GigabitEthernet 0/3 RM_FOR_PBR
# 检查路由图配置信息,确认策略规则。
Device# show route-maproute-map RM_FOR_PBR, permit, sequence 10
Match clauses:
ip address 1
Set clauses:
ip next-hop 200.24.18.1
ip next-hop 200.24.19.1
route-map RM_FOR_PBR, permit, sequence 20
Match clauses:
ip address 2
Set clauses:
ip next-hop 200.24.19.1
ip next-hop 200.24.18.1
# 检查ACL配置信息,确认报文过滤规则。
Device# show access-lists
ip access-list standard 1
10 permit 200.24.16.0 0.0.0.255
10 permit 200.24.16.0 0.0.0.255
ip access-list standard 2
10 permit 200.24.17.0 0.0.0.255
Device的配置文件。
!
ip policy redundance
!
access-list 1 permit 200.24.16.0 0.0.0.255
access-list 2 permit 200.24.17.0 0.0.0.255
!
route-map RM_FOR_PBR 10
match ip address 1
set ip next-hop 200.24.18.1 set ip next-hop 200.24.19.1
!
route-map RM_FOR_PBR 20
match ip address 2
set ip next-hop 200.24.19.1
set ip next-hop 200.24.18.1
!
interface GigabitEthernet 0/3 ip policy route-map RM_FOR_PBR
!
配置match匹配ACL和前缀列表等策略后,没有定义相应的ACL和前缀列表。
公司内部使用IBGP进行组网,其中财务人员与采购人员均通过Device A接入公司网络,其他普通员工通过Device B接入公司网络。Host A为公司通用文件服务器,Host B为财务系统,Host C为供货采购系统。要求从路由层面禁止普通员工访问Host B和Host C,即Device A上进行路由控制,只往邻居Device B通告192.168.1.0/24段路由。
地址前缀列表功能组网图
配置IBGP邻居,并通告Device A相连的3个子网。
配置地址前缀列表。
在Device A上关联地址前缀列表,过滤发出的路由。
配置接口IP,通告IBGP邻居。(略)
配置地址前缀列表,匹配192.168.1.0/24的流量。
Device A> enable
Device A# configure terminal
Device A(config)# ip prefix-list pre1 permit 192.168.1.0/24
在BGP中指定邻居1.1.1.2,并生效前缀列表pre1,过滤发出的路由。
Device A(config)# router bgp 100
Device A(config-router)# neighbor 1.1.1.2 prefix-list pre1 out
# 检查地址前缀列表。
Device A> enable
Device A# show ip prefix-listip prefix-list pre1: 1 entries
seq 5 permit 192.168.1.0/24
Device A# show ip bgp
BGP table version is 2, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale, b - backup entry
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.1.0 0.0.0.0 0 32768 i
*> 192.168.2.0 0.0.0.0 0 32768 i
*> 192.168.3.0 0.0.0.0 0 32768 i
Total number of prefixes 3
# 检查BGP路由表,确认过滤行为是否正确。
Device B> enable
Device B# show ip bgp
BGP table version is 4, local router ID is 1.1.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i192.168.1.0 1.1.1.1 0 100 0 i
Total number of prefixes 1
Device A的配置文件。
!
ip prefix-list pre1 permit 192.168.1.0/24
!
router bgp 100
neighbor 1.1.1.2 prefix-list pre1 out
!
运营商通过EBGP实现网络互连,其中Device A、Device B和Device C为EBGP邻居。因Device C所在数据中心将进行改造升级,升级过程中可能会造成网络波动。为减小影响,其他数据中心将不学习途经AS 200的路由,即Device A过滤只从Device B和Device C收包含AS号200的路由信息。
自治域路径过滤列表功能组网图
创建AS路径过滤规则,匹配只包含AS号200的路径信息。
Device A上与Device B、Device C建立EBGP邻居。
在Device A上关联自治域路径过滤列表,过滤从Device B和Device C接收到的路由
配置接口IP,完成EBGP基础配置。(略)
配置自治域过滤列表功能,匹配AS号为200的路由。
Device A(config)# ip as-path access-list 123 permit ^200$
Device A指定BGP邻居,并使用自治域系统过滤列表123进行路由过滤。
Device A(config)# router bgp 100
Device A(config-router)# neighbor 192.168.1.2 filter-list 123 in
Device A(config-router)# neighbor 192.168.2.2 filter-list 123 in
Device A> enable
Device A# show ip as-path-access-list
AS path access list 123
permit ^200$
# 在关联自治域路径过滤列表前,检查BGP路由表,确认是否学习到所有路由。
Device A# show ip bgp
BGP table version is 1, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale, b - backup entry
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/24 192.168.1.2 0 0 200 i
*> 20.0.0.0/24 192.168.2.2 0 0 300 i
Total number of prefixes 2
# Device A关联自治域路径过滤列表后,检查看BGP路由表,确认过滤行为是否正确。
Device A# show ip bgp
BGP table version is 1, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale, b - backup entry
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/24 192.168.1.2 0 0 200 i
Total number of prefixes 1
Device A的配置文件。
!
ip as-path access-list 123 permit ^200$
!
router bgp 100
neighbor 192.168.1.2 filter-list 123 in
neighbor 192.168.2.2 filter-list 123 in
!
企业在A、B两地均存在办公点,通过EBGP相连接,其中两个分支的出口设备Device A和Device B为EBGP邻居。因为企业安全管理上的需要,在总部B通过团体属性对不同网段的用途进行标记。其中团体属性为100:20被认定为日常办公服务器段,只有属于日常办公范围的路由分支A才会接收。因此需要在Device A上对从Device B接收的路由进行过滤,只接收团体属性为100:20的路由。
团体属性过滤列表功能组网图
定义标准团体属性列表,匹配团体属性100:20。
A与B建立EBGP邻居。
在B上通告带团体属性的路由。
在A上关联团体属性过滤列表(BGP只能通过路由图来应用),过滤从B接收到的路由。
配置接口IP等基础配置。(略)
配置Device B路由图,配置团体属性。
Device B> enable
Device B# configure terminal
Device B(config)# route-map comm1Device B(config-route-map)# set community 100:20 200:20Device B(config-route-map)# exitDevice B(config)# route-map comm2Device B(config-route-map)# set community 100:20Device B(config-route-map)# exitDevice B(config)# route-map comm3Device B(config-route-map)# set community 200:20Device B(config-route-map)# exit
Device B通告带有团体属性的路由。
Device B(config)# router bgp 200Device B(config-router)# neighbor 192.168.1.1 send-communityDevice B(config-router)# network 10.0.0.0 mask 255.255.255.0 route-map comm1
Device B(config-router)# network 20.0.0.0 mask 255.255.255.0 route-map comm2
Device B(config-router)# network 30.0.0.0 mask 255.255.255.0 route-map comm3
Device B(config-router)# network 40.0.0.0 mask 255.255.255.0
Device A配置团体属性列表和路由图,匹配团体属性为100:20的路由。
Device A> enable
Device A# configure terminal
Device A(config)# ip community-list standard test permit 100:20Device A(config)# route-map COMDevice A(config-route-map)# match community testDevice A(config-route-map)# exit
Device A指定邻居192.168.1.2,使用路由图COM过滤从邻居接收的路由。
Device A(config)# router bgp 100Device A(config-router)# neighbor 192.168.1.2 route-map COM in
# 检查Device A团体属性过滤列表。
Device A> enable
Device A# show ip community-listNamed Community standard list test
permit 100:20
# Device A关联团体属性过滤列表前,检查BGP路由表。
Device A# show ip bgp
BGP table version is 1, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale, b - backup entry
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/24 192.168.1.2 0 0 200 i
*> 20.0.0.0/24 192.168.1.2 0 0 200 i
*> 30.0.0.0/24 192.168.1.2 0 0 200 i
*> 40.0.0.0/24 192.168.1.2 0 0 200 i
Total number of prefixes 4
# 检查Device A的BGP路由。
Device A# show ip bgp 10.0.0.0
BGP routing table entry for 10.0.0.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
200
192.168.1.2 from 192.168.1.2 (192.168.1.2)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 100:20 200:20
Last update: Wed Nov 6 18:58:18 2013
# Device A配置团体属性过滤列表后,查看BGP路由,确认过滤行为是否正确。
Device A# show ip bgp BGP table version is 1, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale, b - backup entry
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/24 192.168.1.2 0 0 200 i
*> 20.0.0.0/24 192.168.1.2 0 0 200 i
Total number of prefixes 2
Device A的配置文件。
!
ip community-list standard test permit 100:20
!
route-map COM match community test!
router bgp 100 neighbor 192.168.1.2 route-map COM in
!
DeviceB的配置文件。
!
route-map comm1 set community 100:20 200:20
!
route-map comm2 set community 100:20
!
route-map comm3 set community 200:20!
router bgp 200 neighbor 192.168.1.1 send-community network 10.0.0.0 mask 255.255.255.0 route-map comm1
network 20.0.0.0 mask 255.255.255.0 route-map comm2
network 30.0.0.0 mask 255.255.255.0 route-map comm3
network 40.0.0.0 mask 255.255.255.0