与单纯依照IP报文的目的地址查找路由表进行转发不同,策略路由是一种依据用户制定的策略进行路由转发的机制。策略路由可以对于满足一定条件(ACL规则等)的报文,执行指定的操作(设置报文的下一跳等)。
报文到达后,系统首先根据策略路由转发,若没有配置策略路由或配置了策略路由但找不到匹配的表项时,再根据路由表来转发报文。
目前,设备只支持转发策略路由。转发策略路由只对接口接收的报文起作用,指导其转发,对本地产生的报文不起作用。
策略用来定义报文的匹配规则,以及对报文执行的操作。策略由节点组成。
一个策略可以包含一个或者多个节点。节点的构成如下:
每个节点由节点编号来标识。节点编号越小节点的优先级越高,优先级高的节点优先被执行。
每个节点的具体内容由if-match子句和apply子句来指定。if-match子句定义该节点的匹配规则,apply子句定义该节点的动作。
每个节点对报文的处理方式由匹配模式决定。匹配模式分为permit(允许)和deny(拒绝)两种。
应用策略后,系统将根据策略中定义的匹配规则和操作,对报文进行处理:系统按照优先级从高到低的顺序依次匹配各节点,如果报文满足这个节点的匹配规则,就执行该节点的动作;如果报文不满足这个节点的匹配规则,就继续匹配下一个节点;如果报文不能满足策略中任何一个节点的匹配规则,则根据路由表来转发报文。
1. if-match子句
目前,策略路由仅提供了一种if-match子句,即if-match acl,用来设置ACL匹配规则。
在一个节点中,同一类型的if-match子句最多只能有一条。
2. apply子句
目前,策略路由仅提供了一种apply子句,即apply next-hop,用来设置报文转发的下一跳。
3. 节点的匹配模式与节点的if-match子句、apply子句的关系
一个节点的匹配模式与这个节点的if-match子句、apply子句的关系如表1-1所示。
表1-1 节点的匹配模式、if-match子句、apply子句三者之间的关系
2.1 创建策略节点
表1-2 创建策略节点
2.2 配置策略节点的匹配规则
表1-3 配置策略节点的匹配规则
2.3 配置策略节点的动作
表1-4 配置策略节点的动作
2.4 接口应用策略
表1-5 应用策略
2.5 策略路由显示与维护
表1-6 策略路由显示和维护
3.1 基于报文协议类型的转发策略路由配置举例
1. 组网需求
通过策略路由控制从SWA的接口Vlan-interface1接收的报文:
指定所有TCP报文的下一跳为1.1.2.2;
其它报文仍然按照查找路由表的方式进行转发。
2. 组网图
图1-1 基于报文协议类型的转发策略路由的配置举例组网图
3. 配置步骤
(1) 配置Switch A
# 定义访问控制列表ACL 3101,用来匹配TCP报文。
<SwitchA> system-view
[SwitchA] acl advanced 3101
[SwitchA-acl-adv-3101] rule permit tcp
[SwitchA-acl-adv-3101] quit
# 定义5号节点,指定所有TCP报文的下一跳为1.1.2.2。
[SwitchA] policy-based-route aaa permit node 5
[SwitchA-pbr-aaa-5] if-match acl 3101
[SwitchA-pbr-aaa-5] apply next-hop 1.1.2.2
[SwitchA-pbr-aaa-5] quit
# 在接口Vlan-interface11上应用转发策略路由,处理此接口接收的报文。
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface11] ip address 10.110.0.10 255.255.255.0
[SwitchA-Vlan-interface11] ip policy-based-route aaa
[SwitchA-Vlan-interface11] quit
# 配置接口Vlan-interface10和Vlan-interface20的IP地址。
[SwitchA] interface vlan-interface 10
[SwitchA-Vlan-interface10] ip address 1.1.2.1 255.255.255.0
[SwitchA-Vlan-interface10] quit
[SwitchA] interface vlan-interface 20
[SwitchA-Vlan-interface20] ip address 1.1.3.1 255.255.255.0
(2)配置Switch B
# 配置到网段10.110.0.0/24的静态路由。
<SwitchB> system-view
[SwitchB] ip route-static 10.110.0.0 24 1.1.2.1
# 配置接口Vlan-interface10的IP地址。
[SwitchB] interface vlan-interface 10
[SwitchB-Vlan-interface10] ip address 1.1.2.2 255.255.255.0
(3) 配置Switch C
<SwitchC> system-view
[SwitchC] ip route-static 10.110.0.0 24 1.1.3.1
# 配置接口Vlan-interface20的IP地址。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip address 1.1.3.2 255.255.255.0
4. 证配置结果
将Host A的IP地址配置为10.110.0.20/24,网关地址配置为10.110.0.10。
从Host A上Telnet Switch B,结果成功。
从Host A上Telnet Switch C,结果失败。
从Host A上ping Switch C,结果成功。
由于Telnet使用的是TCP协议,ping使用的是ICMP协议,所以由以上结果可证明:从Switch A的接口Vlan-interface11接收的TCP报文的下一跳为1.1.2.2,接口Vlan-interface20不转发TCP报文,但可以转发非TCP报文,策略路由设置成功。