SR-MPLS-POLICY

理论知识

整体看

image-20230625121200672

解析一下上图:

无论是SR-MPLS还是SRV6都可以在控制器的加持下使用SR-POLICY,如上图所示,SR-MPLS有三种转发方式:BE、TE、SR-POLICY,在SRV6当中就两种BE和SR-POLICY,SRV6当中没有TE,实际上SRV6的SRV6-POLICY就替代了TE。

  • SR-MPLS的转发方式
    • BE:不需要引流
    • TE:在BE的基础上可以做TE,需要引流和配置隧道
    • SR-POLICY
      • 一般由控制器下发SR-POLICY,如果没有控制器,管理员也可以自己手工创建
      • 在BE的基础上可以做POLICY,控制器直接下发标签列表,不需要隧道
  • SRV6
    • BE
    • SRV6-POLICY(SR-POLICY就是SRV6的TE)

SR-POLICY当中的关键信息

SR-POLICY的本质是“地图”,控制器结合各种信息计算出一条最优秀的路径,这条路径就是SR-POLICY当中的主要信息,通过控制器下发到源节点,要求源节点在进行SR的封装时,必须将SR-POILCY当中的地图信息封装到报文内,这样报文就会按照地图当中的信息进行转发了。

SR-POLICY的应用场景:

SR-POLICY在设备上体现其实也是一条隧道,与TE隧道差不多,TE隧道有哪些应用场景,SR-POLICY隧道就有哪些应用场景,我们借用下面这张图来说明SR-POLICY是如何被使用的,如下所示:

image-20230625121216288

  • 环境描述:

    • 假设PE3上当前有两个网段:33.33.33.33(RD)和44.44.44.44(NRD)网段,分别对应两个业务RD和NRD;
  • 目标

    • PE1想要实现访问PE3的33网段时走PE1-P1-PE3这条路径
    • 访问PE3的44网段时走PE1-PE2-P2-PE4-PE3这条路径;
  • 通过SR-POLICY的实现思路

    1. 在PE3上创建33网段对应VPN-INSTANCE,设置RD、RT,最关键的是通过BGP属性设置一个颜色值(33:33),这样PE3向33网段传到PE1时就会携带这个颜色值,PE3的44网段也要这么做(44:44),PE1上当前已经收到了PE3的两条路由,这两条路由是这样的:。

      # PE1的路由表
      33.33.33.33  下一跳:10.1.3.3   颜色值:33:33
      44.44.44.44  下一跳:10.1.3.3   颜色值:44:44
      
    2. 在控制器上生成两条从PE1到PE3两个网段的路径的路径:P1和P2,P1到P3的33网段走PE1-P1-PE3,,P1到P3的44.44网段走PE1-PE2-P2-PE4-PE3,路径当然也包括颜色:33:33、44:44,控制器通过SR-POLICY将这两条路径下发到源节点PE1上,注意下发的不是配置,而是直接作用在内存当中的,重启设备就没有了;大概是这样的:

      # PE1收到的两条SR-POLICY
      P1:PE1-P1-PE3  颜色值:33:33
      P2:PE1-PE2-P2-PE4-PE3  颜色值:44:44
      	
      

OK,带颜色值的路由条目已经从PE3传到到了PE1当中,并且已经形成了路由条目;而且SR-POLICY也已经成功下发到了PE1上,当前的问题是怎么用呢?其实你仔细观察一下这两个信息,路由表表示是从源和目标,但没有告诉你具体怎么走,而SR-POLICY里面最关键的内容就是具体如何走!也就是说这两个信息其实是互补的,而且它们都有一个共同的值,那就是颜色值!而且这个颜色值是对应好的!

当数据包来到PE1时,如果命中了33.33.33.33这条路由,由于这条路由带着颜色值,于是就会根据这个颜色值去查SR-POLICY的数据库,结果通过颜色匹配住了P1路径,那数据在进行IPV6报文当中SR对应的SRH封装时就会把这个路径封装到其中,沿途的所有路由器都需要按照这个路径进行转发。

细节看

SR-POLICY 路径并不是只有一条路径:

从PE1和PE3有多条路径可以走,所以控制器计算路径的时候很有可能会计算出多条,会挑选最优秀的一条把优先级提高,其它的路径也会跟着一条下发,只不过优先级不高,不会优选,只当做备份路径。

  • 一个SR MPLS POLICY由以下三部分组成:
    • 头端:就是代表自己,没啥用
    • 颜色(BGP的团体属性)
    • 尾端:目标路由器的全局唯一地址,比如10.0.3.3

颜色是什么意思

颜色是BGP的一种属性,其实就是一个值!我们可以通过ACL匹配住某路由条目,然后通过route-policy对BGP的路由打个一个值,这个值就是颜色,这个过程就是路由染色的过程。

SR-MPLS POLICY实验

image-20230625121222414

1. PE1 制定两条路径

# PE1
# 第一步:PE1定义两条POLICY使用到的路径列表,属于SR-POLICY的一部分
	segment-list to_pe3_1
		index 10 sid lable 16005
		index 20 sid label 16003
	segment-list to_pe3_2
		index 10 sid lable 16002
		index 20 sid label 16006
		index 30 sid label 16004
		index 40 sid label 16003

2. PE1 调用路径生成SR-POLICY隧道

# 第二步:PE1结合颜色、endpoint配置SR-POLICY
sr-te policy p1 endpoint 10.1.3.3 color 100
	# 设置主路径,优先极200
	candidate-path prefernce 200
		# 调用第一步定义的路径
		segment-list to_pe3_1

# 再定义一条SR-POLICY
sr-te policy p1 endpoint 10.1.3.3 color 200
	candidate-path prefernce 200
		segment-list to_pe3_2
# PE1验证一下,会产生两个SR的隧道
dis tunnen-info all
		xxxx01  srtepolicy 10.1.3.3 
		xxxx02 srtepolicy 10.1.3.3 
# 验证两个隧道是否通畅
	ping lsp sr-te policy policy-name p1
	ping lsp sr-te policy policy-name p2

3. PE3路由染色

以上模拟的是控制器下发SR-POLICY的操作,现在我们还要去PE3上操作

# PE3
# PE3 当前SR-POLICY不是关键,不做也行,我们重点看PE1的
	segment-list to_pe1_1
		index 10 sid label 10005
		index 20 sid label 10001
	segment-list to_pe1_2
		index 10 sid label 10004
		index 20 sid label 10006
		index 30 sid label 10002
		index 40 sid label 10001
	sr-te policy to_p1
		sr-te policy pll endpoint 10.1.1.1 color 300
			# 搞主备放到一个POLICY当中
			# 不关心PE3是如何回包的,走以下哪个路径都行
			candidate-path prefernce 200
				segment-list to_pe1_1
			candidate-path prefernce 100
				segment-list to_pe1_2
# 关键的一步来了,我们要在PE3上去发布带颜色的路由
	ip vpn-instance  test1
		route-dist 100:1
		vpn-target 100:1 
	int lookback 1
		ip binding vpn-instance test1
		ip add 33.33.33.33 32
	int lookback 2
		ip binding vpn-instance test1
		ip add 44.44.44.44 32

接下来的需求就很明确了,我们希望PE1访问PE3的33.33.33.33与PE1访问44.44.44.444走不同的路径

# 这一步操作最是关键,开始路由染色
# 先匹配上再打颜色
	acl 2000
		rule permit source 33.33.33.33
	acl 2001
		rule permit source 44.44.44.44
# 通过调用SR-POLICY进行打颜色
	route-policy test_policy permit node 10
		if-match acl 2000
		# 0:100就是打上颜色100,正好与PE1上POLICY路径颜色对应
		apply extommunity color 0:100 
	route-policy test_policy permit node 20
		if-match acl 2001
		# 0:200就是打上颜色200,正好与PE1上POLICY路径颜色对应
		apply extommunity color 0:200

# 接下一就是PE3的BGP VPNV4的配置了,比较简单
bgp 100
	peer 10.1.1.1 as 100
	peer 10.0.1.1 connect-interface lookback 0
	ipv4-family vpnv4
		peer 10.1.1.1 enable
		# 在出方向上调用刚才做好的POLICY
		# 这样传到PE1形成的路径就会携带颜色
		peer 10.0.1.1 route-policy test_policy export
	ipv4-family vpn-instance test1
		import-route direct
	
# 接下一就是PE1的BGP
bgp 100
	peer 10.1.3.3 as 100
	peer 10.0.3.3 connect-interface lookback 0
	ipv4-family vpnv4
		peer 10.1.3.3 enable
	ipv4-family vpn-instace test1
		import-route direct

	ip vpn-instance  test1
		route-dist 100:1
		vpn-target 100:1 
	int lookback 1
		ip binding vpn-instance test1
		ip add 11.11.11.11 32

4. PE1校验PE3的路由条目

# 校验一下,在PE1上看一个PE3传来的路由是否带了颜色
dis bgp vpnv4 all routing-table 33.33.33.33 verbose
	……
		# 来了
		ext-community:0:100
	……
dis bgp vpnv4 all routing-table 44.44.44.44 verbose
	……
		ext-community:0:200
	……

# 再校验一下,PE1到33.33.33.33的路由指向是否递归到了SR隧道当中
# 发现递归到SRBE当中了,没有递归到SRTEPOLICY隧道当中,怎么回事,tunnel-policy的问题
	dis ip routinng vpn-instance test1 33.33.33.33 verbose
	dis tunnel-info all

5. PE1 路径选择

# 制定tunnel-policy策略,要求PE1先选择 sr-te-policy路径 
tunnel-policy p1
	tunnel select-seq sr-te-policy sr-lsp load-balance-number 1 nmix
# 在vpn实例下调用P1,再去校验就正常了
	ip vpn-instace test1
		tnl-policy p1
# PE1 看一下路径是否一致,正常情况下是不一致的
tracert -vpn-instance test1 -a 11.11.11.11 33.33.33.33
tracert -vpn-instance test1 -a 11.11.11.11 44.44.44.44

补充

SR-POLICY的路径匹配方式

  1. PE1上收到数据包之后是先命中路由,由于路由条目当中携带颜色,颜色再去匹配SR-POLICY数据库当中的路径,我们上述实验就是用的这种;
  2. 还有第二种,主机发出的业务路由是可以打上DSCP的值,我们在PE1也可以通过配置将DSCP与SR-POLICY当中的颜色做上关联,这样也能达到效果

路由染色的位置

路由染色并不是一定要在PE3的出接口染色,路由发出去的时候可以染色,那PE1路由接收的时候也是可以染色的!

posted @ 2023-06-25 12:17  张贺贺呀  阅读(218)  评论(0编辑  收藏  举报