简介
SR Policy使用段列表(Segment List)指定转发路径,但是抛弃了隧道接口的概念。
SR Policy根据Segment不同分为SR-MPLS Policy和SRv6 Policy。本文将介绍SR-MPLS Policy。
控制器基于代表业务SLA的Color属性计算路径,并将结果下发转发器构成SR-MPLS Policy隧道,网络头端结点通过业务路由的Color团体属性和下一跳信息匹配到对应的SR-MPLS Policy隧道进行业务转发。
一个SR-MPLS Policy由一个元组标识<headend, color, endpoint>。
对于一个指定的节点SR-MPLS Policy则由<color, endpoint>标识:
头端(headend):SR-MPLS Policy生成的节点,一般是全局唯一的IP地址。
颜色(color):32比特扩展团体属性,用于标识某一种业务意图(例如低延时)。
尾端(endpoint):SR-MPLS Policy的目的地址,一般是全局唯一的IP地址。
Color和endpoint被用于SR-MPLS Policy在特定头端标识转发路径。
实验步骤
拓扑图
1、配置全网接口地址地址,接着开启全局SR和配置SR ID。ip地址格式为10.1.xy.x&y(VSR3、4、5略,请自行配置)
[VSR-88_1]segment-routing
[VSR-88_1]interface LoopBack0
[VSR-88_1-LoopBack0] ip address 1.1.1.1 255.255.255.255
[VSR-88_1-LoopBack0] ospf 1 prefix-sid index 1
[VSR-88_1]interface GigabitEthernet0/0/0
[VSR-88_1-GigabitEthernet0/0/0]ip address 10.1.12.1 255.255.255.0
[VSR-88_2]segment-routing
[VSR-88_2]interface LoopBack0
[VSR-88_2-LoopBack0]ip address 1.1.1.2 255.255.255.255
[VSR-88_2-LoopBack0] ospf 1 prefix-sid index 2
[VSR-88_2]interface GigabitEthernet0/0/0
[VSR-88_2-GigabitEthernet0/0/0] ip address 10.1.24.2 255.255.255.0
[VSR-88_2]interface GigabitEthernet0/0/1
[VSR-88_2-GigabitEthernet0/0/1] ip address 10.1.12.2 255.255.255.0
[VSR-88_2]interface GigabitEthernet0/0/2
[VSR-88_2-GigabitEthernet0/0/2] ip address 10.1.23.2 255.255.255.0
2、开启全网全局mpls-lsr id及接口mpls、mpls te功能(VSR3、4、5略,请自行配置)
[VSR-88_1]mpls
[VSR-88_1]mpls te
[VSR-88_1-GigabitEthernet0/0/0]mpls enable
[VSR-88_2]mpls
[VSR-88_2]mpls te
[VSR-88_2]interface GigabitEthernet0/0/0
[VSR-88_2-GigabitEthernet0/0/0]mpls enable
[VSR-88_2]interface GigabitEthernet0/0/1
[VSR-88_2-GigabitEthernet0/0/1]mpls enable
[VSR-88_2]interface GigabitEthernet0/0/2
[VSR-88_2-GigabitEthernet0/0/2]mpls enable
3、创建ospf并进入区域视图发布接口地址及环回地址,然后配置SRGB并将sr的转发平面配置为mpls,最后在区域0内开启mpls te功能(VSR2、3、4、5略,请自行配置)
[VSR-88_1]ospf 1 router-id 1.1.1.1 //进入ospf区域视图并配置Route-id
[VSR-88_1-ospf-1] segment-routing global-block 16000 17000 //配置SRGB的值
[VSR-88_1-ospf-1] segment-routing mpls //配置SR的转发平面为Mpls
[VSR-88_1-ospf-1] area 0.0.0.0 //进入区域0视图
[VSR-88_1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0 //发布路由
[VSR-88_1-ospf-1-area-0.0.0.0] network 10.1.12.0 0.0.0.255 //发布路由
[VSR-88_1-ospf-1-area-0.0.0.0] mpls te enable //开启ospf区域0的MplsTE的功能
配置完成后查看邻居和标签转发表
可以看到邻居关系和标签转发表都正常
4、在VSR1和VSR5上创建VPN实例并绑定到环回口1和2,然后添加IP地址
[VSR-88_1]ip vpn-instance h3c
[VSR-88_1-vpn-instance-h3c] route-distinguisher 100:1
[VSR-88_1-vpn-instance-h3c] vpn-target 100:1 import-extcommunity
[VSR-88_1-vpn-instance-h3c] vpn-target 100:1 export-extcommunity
[VSR-88_1]interface LoopBack1
[VSR-88_1-LoopBack1] ip binding vpn-instance h3c
[VSR-88_1-LoopBack1] ip address 11.11.11.11 255.255.255.255
[VSR-88_1]interface LoopBack2
[VSR-88_1-LoopBack2] ip binding vpn-instance h3c
[VSR-88_1-LoopBack2] ip address 111.111.111.111 255.255.255.255
[VSR-88_5]ip vpn-instance h3c
[VSR-88_5-vpn-instance-h3c] route-distinguisher 100:1
[VSR-88_5-vpn-instance-h3c] vpn-target 100:1 import-extcommunity
[VSR-88_5-vpn-instance-h3c] vpn-target 100:1 export-extcommunity
[VSR-88_5]interface LoopBack1
[VSR-88_5-LoopBack1] ip binding vpn-instance h3c
[VSR-88_5-LoopBack1] ip address 55.55.55.55 255.255.255.255
[VSR-88_5]interface LoopBack2
[VSR-88_5-LoopBack2] ip binding vpn-instance h3c
[VSR-88_5-LoopBack2] ip address 222.222.222.222 255.255.255.255
5、VSR1与VSR5创建VPNV4的邻居关系并在vpn实例下的IPv4单播视图下引入直连
[VSR-88_1]bgp 100
[VSR-88_1-bgp-default] peer 1.1.1.5 as-number 100
[VSR-88_1-bgp-default] peer 1.1.1.5 connect-interface LoopBack0
[VSR-88_1-bgp-default] address-family vpnv4
[VSR-88_1-bgp-default-vpnv4] peer 1.1.1.5 enable
[VSR-88_1-bgp-default] ip vpn-instance h3c //进入bgp的vpn实例视图
[VSR-88_1-bgp-default-h3c] address-family ipv4 unicast //进入ipv4的单播视图
[VSR-88_1-bgp-default-ipv4-h3c] import-route direct //引入直连
[VSR-88_5]bgp 100
[VSR-88_5-bgp-default] peer 1.1.1.1 as-number 100
[VSR-88_5-bgp-default] peer 1.1.1.1 connect-interface LoopBack0
[VSR-88_5-bgp-default] address-family vpnv4
[VSR-88_5-bgp-default-vpnv4] peer 1.1.1.1 enable
[VSR-88_5-bgp-default] ip vpn-instance h3c //进入bgp的vpn实例视图
[VSR-88_5-bgp-default-h3c] address-family ipv4 unicast //进入ipv4的单播视图
[VSR-88_5-bgp-default-ipv4-h3c] import-route direct //引入直连
配置完成后查看邻居关系
查看VPN的路由表
查看BGP的路由表
查看地址连通性
发现不通,这时候不要着急,我们抓包看一下
在VSR1的0口抓包来查看情况
可以看到包是正常的,并且携带BGP分配的标签进行转发,那么连通性这块我们暂且不做纠结,有可能是模拟器的问题。
接着查看BGP是否分配了此标签
可以看到BGP分配的标签为1278,和包里面的值完全相同,并且在路由信息中可以看到我们分配的RT值 。
6、接着我们配置SR Policy来实现有条件约束的TE,也就是流量工程。开头我们已经说过了,SR Policy完全摒弃了隧道接口,也就是说我们不需要创建一个隧道来承载数据的转发了,我们只需要在SR中创建我们想要的策略和路径来对数据进行转发就OK了,接着我们配置VSR1去访问VSR5的两条路径为:
VSR1的Loop1访问VSR5的Loop1和Loop2路径为:VSR1-VSR2-VSR3-VSR4-VSR5
VSR1的Loop2访问VSR5的Loop2和Loop2路径为:VSR5-VSR3-VSR4-VSR2-VSR1
[VSR-88_1]segment-routing //进入SR的视图
[VSR-88_1-segment-routing] traffic-engineering //进入TE(流量工程)视图
[VSR-88_1-sr-te] segment-list R1_R5M //创建segment-list列表
[VSR-88_1-sr-te-sl-R1_R5M] index 1 mpls label 16002 //配置第一个索引为16002
[VSR-88_1-sr-te-sl-R1_R5M] index 20 mpls label 16003 //配置第一个索引为16003
[VSR-88_1-sr-te-sl-R1_R5M] index 30 mpls label 16004 //配置第一个索引为16004
[VSR-88_1-sr-te-sl-R1_R5M] index 40 mpls label 16005 //配置第一个索引为16005
[VSR-88_1-sr-te-sl-R1_R5M] quit
注:SR Policy中的segment-list类似于SR MPLS中的显式路径
[VSR-88_1-sr-te] segment-list R1_R5S //创建segment-list列表
[VSR-88_1-sr-te-sl-R1_R5S] index 1 mpls label 16002 //配置第一个索引为16002
[VSR-88_1-sr-te-sl-R1_R5S] index 20 mpls label 16004 //配置第一个索引为16004
[VSR-88_1-sr-te-sl-R1_R5S] index 30 mpls label 16003 //配置第一个索引为16003
[VSR-88_1-sr-te-sl-R1_R5S] index 40 mpls label 16005 //配置第一个索引为16005
#
[VSR-88_1-sr-te]policy R1_R5 //创建名为R1_R5的策略
[VSR-88_1-sr-te-policy-R1_R5] color 200 end-point ipv4 1.1.1.5 //如果color的属性为200并且尾端为1.1.1.5的路由就对此策略进行匹配
[VSR-88_1-sr-te-policy-R1_R5] candidate-paths //进入路径选择视图
[VSR-88_1-sr-te-policy-R1_R5-path] preference 200 //进入优先级200视图
[VSR-88_1-sr-te-policy-R1_R5-path-pref-200] explicit segment-list R1_R5M //添加SR索引列表
#
[VSR-88_1-sr-te] policy R1_R5_2
[VSR-88_1-sr-te-policy-R1_R5_2] color 100 end-point ipv4 1.1.1.5//如果color的属性为100并且尾端为1.1.1.5的路由就对此策略进行匹配
[VSR-88_1-sr-te-policy-R1_R5_2] candidate-paths //进入路径选择视图
[VSR-88_1-sr-te-policy-R1_R5_2-path] preference 200 //进入优先级200视图
[VSR-88_1-sr-te-policy-R1_R5_2-path-pref-200] explicit segment-list R1_R5S //添加SR索引列表
配置完成后我们再次查看标签转发表
可以看到我们创建的两条SR Policy都能够在表中看到了
接着我们查看隧道
可以看到第一条BE隧道,和后面我们创建的两条TE Policy隧道
7、接着我们让VSR1去访问VSR6的时候被打上Color属性,这样就能匹配上我们创建的SR策略了
接着我们在VSR5上创建路由策略
[VSR-88_5]route-policy R1_R5 permit node 10 //创建名为R1_R5的路由策略
[VSR-88_5-route-policy-R1_R5-10] apply extcommunity color 01:100 //添加拓展团体属性color,并设置值为01:100
[VSR-88_5]route-policy R1_R5_2 permit node 10 //创建名为R1_R5_2的路由策略
[VSR-88_5-route-policy-R1_R5_2-10] apply extcommunity color 01:200 //添加拓展团体属性color,并设置值为01:200
然后我们进入到BGP的vpn-instance下的ipv4视图,发布Loop1和Loop2的路由并让他们携带拓展团体属性
[VSR-88_5]bgp 100 //进入到BGP100的视图下
[VSR-88_5-bgp-default]ip vpn-instance h3c //进入到BGP VPN-INSTANCE的视图下
[VSR-88_5-bgp-default-h3c]address-family ipv4 //进入到VPN视图的IPv4的视图下
[VSR-88_5-bgp-default-ipv4-h3c]network 55.55.55.55 255.255.255.255 route-policy R1_R5 //发布55.55.55.55/32并携带路由策略R1_R5
[VSR-88_5-bgp-default-ipv4-h3c]network 222.222.222.222 255.255.255.255 route-policy R1_R5_2 //发布222.222.222.222/32并携带路由策略R1_R5_2
接着我们重新查看IP vpn-instance和BGP Vpnv4的路由表
从图中可以看到,去往VSR5的两条路由,分别被打上了不通的Color值,并且去往这两条路由的下一条跳从原来的物理口变成了我们在SR中创建的策略名称,这说明我们的Policy已经成功匹配了这两条路由
接着我们抓包进行验证
使用VSR1的环回口1去pingVSR5的环回口1
路径和我们规划的一致
接着使用VSR1的环回口2去pingVSR5的环回口2
路径和我们规划的同样也是一致
本期实验就到这里了,主要就是理解如何配置SR Policy,下次实战的时候就不用慌啦