SR-MPLS TE (流量工程)模拟实验(ENSP)

SegmentRouting是一种源路由协议,通过在路径起始点插入分段信息指导报文转发。它支持MPLS和IPv6数据平面,简化网络路径控制,提供网络路径可编程能力。该技术旨在解决传统IP/MPLS网络中的复杂性和扩展性问题,向SDN网络平滑演进。配置示例展示了如何在MPLS环境下配置SegmentRouting,包括OSPF、MPLSLSR-ID、MPLSTE、显式路径和隧道设置等步骤。
摘要由CSDN通过智能技术生成

什么是Segment Routing?

Segment Routing是一种源路由协议,其核心思想是将网络报文转发路径切割为不同的分段,并在路径起始点往报文中插入分段信息指导报文转发。目前,Segment Routing支持MPLSIPv6两种数据平面,对应着两种技术方案:基于MPLS数据平面的Segment Routing称为SR-MPLS;基于IPv6数据平面的Segment Routing称为SRv6

Segment Routing是如何产生的?

全球信息化的进程使得互联网应用得到了迅速而蓬勃的发展,随着网络规模的扩大以及云时代的到来,网络业务种类越来越多,不同业务对网络的要求不尽相同,传统IP/MPLS网络遇到不少挑战:

  • IP承载网的孤岛问题。MPLS统一了承载网,但是IP骨干网、城域网、移动承载网之间是独立的MPLS域,是相互分离的,需要使用跨域VPN等复杂的技术来互联,导致端到端业务的部署非常复杂。 而且在L2VPN、L3VPN多种业务并存的情况下,设备中可能同时存在LDP、RSVP、IGP、BGP等协议,管理复杂,不适合大规模业务部署。
  • IPv4与MPLS的可编程空间有限。当前很多新业务需要在转发平面加入更多的转发信息,但IETF已经发表声明,停止为IPv4制定更新的标准,另外MPLS只有20bit的标签空间,且标签字段固定、长度固定,缺乏可扩展性,导致很难满足未来业务的网络编程需求。
  • 应用与承载网隔离。目前应用与承载网的解耦,导致网络自身的优化困难,难以提升网络的价值。当前运营商普遍面临被管道化的挑战,无法从增值应用中获得相应的收益;而应用信息的缺失,也使得运营商只能采用粗放的方式进行网络调度和优化,造成资源的浪费。MPLS也曾试图更靠近主机和应用,但因为其本身网络边界多、管理复杂度大等多方面的原因,均以失败告终。
  • 传统网络数据面和控制面紧密耦合,相互绑定销售,在演进上相互依赖,业务上线周期长,难以应对现在新兴业务快速发展的局面。

为了破解上述困局,出现了很多新的网络技术思潮。SDNSoftware-Defined Networking软件定义网络)就是其中的佼佼者。SDN是一种新的网络体系架构,由美国斯坦福大学 尼克 · 麦基翁(Nick McKeown)教授的团队提出,通过借鉴计算机领域通用硬件、软件定义和开源理念来解决传统网络架构中网络设备硬件、操作系统和网络应用紧密耦合,相互依赖的问题。SDN主要有3大特征:网络开放可编程、逻辑上的集中控制、控制平面与转发平面分离。符合这3大特征的网络都可以称为SDN。

Segment Routing技术就是在SDN思潮的影响下产生的,其核心思想是将报文转发路径切割为不同的分段,并在路径起始点往报文中插入分段信息,中间节点只需要按照报文里携带的分段信息转发即可。Segment Routing具有简单、高效、易扩展的特点,其优势体现在以下几方面:

  • 具备网络路径可编程能力:Segment Routing具备源路由优势,仅在源节点对报文进行标签操作即可任意控制业务路径,且中间节点不需要维护路径信息,设备控制平面压力小。
  • 简化设备控制平面,减少路由协议数量,简化运维成本;标签转发表简单,标签占用少,设备资源占用率低。
  • 更好的向SDN网络平滑演进:面向SDN架构设计的协议,融合了设备自主转发和集中编程控制的优势,能够更好地实现应用驱动网络。同时,支持传统网络和SDN网络,兼容现有设备,保障现有网络平滑演进到SDN网络。

Segment Routing有哪些技术方案?

Segment Routing的设计理念在现实生活中屡见不鲜,下面举一个例子,来更好的理解其原理。假设你从上海出发去巴黎旅游,需要在维也纳转机。那么你的出行路线分为两段,上海→维也纳、维也纳→巴黎。则你只需要在上海买好上海途经维也纳到巴黎的票,按照计划根据机票,经过两段,飞到巴黎即可。

上海到巴黎出行示意图

网络报文利用Segment Routing技术进行转发的过程也是类似的。Segment Routing技术关键在于两点:对路径进行分段(Segment)以及在起始节点对路径进行排序组合(Segment List),确定出行路径。在Segment Routing技术中,将代表不同功能的Segment进行组合,可以实现对路径的编程,满足不同路径服务质量的需求。

Segment Routing技术支持MPLSIPv6两种转发平面,对应着两种主流的技术方案:基于MPLS转发平面的Segment Routing称为SR-MPLSSegment Routing MPLS);基于IPv6转发平面的Segment Routing称为SRv6

接下来我们进入正题开始配置SR-MPLS,并通过TE隧道来进行转发

拓扑图

介绍

本实验采用6台CX的设备来进行模拟实验,设备的互联地址为配置为10.1.XY.X&Y,拿CX1和CX2举例,也就是10.1.12.1/24,10.1.12.2/24。环回口地址为1.1.1.X,拿CX1举例,那么环回地址为1.1.1.1/32,设备的SRGB和Prefix值都在图中标注好了,接下来开始配置。

配置过程

1、首先为全网设备配置IP地址(CX2-CX5略,请自行配置)

[CX1]interface Ethernet1/0/0
[CX1-Ethernet1/0/0] undo shutdown
[CX1-Ethernet1/0/0] ip address 10.1.12.1 255.255.255.0 //添加接口IP地址
[CX1]interface LoopBack0
[CX1-LoopBack0] ip address 1.1.1.1 255.255.255.255 //添加环回地址

2、配置全网OSPF并查看状态(CX2-CX5略,请自行配置)

[CX1]ospf 1 router-id 1.1.1.1 //开启ospf进程1并配置router-id为1.1.1.1
[CX1-ospf-1] area 0.0.0.0 //进入区域0视图
[CX1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0 //发布环回地址
[CX1-ospf-1-area-0.0.0.0] network 10.1.12.0 0.0.0.255 //发布接口地址

配置完成后查看邻居状态

 可以看到邻居为1.1.1.2,并且状态为FULL了

3、为每台设备配置MPLS LSR-ID、MPLS TE,同时也需要在接口上开启MPLS、MPLS TE

注:在BGP MPLS VPN中我们通常使用LDP来分发标签,但是在SR中,BE隧道只需要开启MPLS,TE隧道需要开启MPLS及MPLSTE,只有在SRv6中才完全不需要MPLS了。

[CX1]mpls lsr-id 1.1.1.1 //为MPLS分配ID
[CX1]Mpls //开启MPLS功能
[CX1-mpls]mpls te //开启MPLS TE功能
[CX1]interface Ethernet1/0/0
[CX1-Ethernet1/0/0] undo shutdown
[CX1-Ethernet1/0/0] ip address 10.1.12.1 255.255.255.0
[CX1-Ethernet1/0/0] mpls //开启接口MPLS功能
[CX1-Ethernet1/0/0] mpls te //开启接口MPLS TE功能

4、为SR分配Prefix ID并且在OSPF中打开不透明的LSA功能,接着开启MPLS并配置转发平面为MPLS,最后在区域0内开启MPLS-TE功能(CX2-CX5略,请自行配置)

[CX1]interface LoopBack0
[CX1-LoopBack0]ospf prefix-sid index 1 //配置sr的prefix id为1
[CX1]ospf 1
[CX1-ospf-1] opaque-capability enable
[CX1-ospf-1] segment-routing mpls
[CX1-ospf-1] segment-routing global-block 16000 17000
[CX1-ospf-1]area 0.0.0.0
[CX1-ospf-1-area-0.0.0.0]  mpls-te enable

查看 SR的MPLS转发表

 可以看到所有的标签都有了

注:这里说明一下,每台设备的标签值为SRGB+Index也就是prefix值算出来的,以CX1为例,SRGB为16000-17000,Prefix值为1,那么CX1的标签就是16001了。

5、接着我们在CX1上开始配置SR隧道,这里我们通过显式路径来让CX1访问CX6的路径为CX1-CX2-CX3-CX4-CX6(隧道可以只在CX1上配置,也可以两端都配置,如果CX6没配置那么CX6回包会通过BE隧道来回)

首先我们先创建一个名为CX1_CX6的显式路径

[CX1]explicit-path CX1_CX6 //创建显式路径
[CX1-explicit-path-CX1_CX6] next sid label 16002 type prefix //配置显式路径第一跳
[CX1-explicit-path-CX1_CX6] next sid label 16003 type prefix //配置显式路径第二跳
[CX1-explicit-path-CX1_CX6] next sid label 16004 type prefix //配置显式路径第三跳
[CX1-explicit-path-CX1_CX6] next sid label 16006 type prefix //配置显式路径第四跳

接着创建隧道

[CX1]interface Tunnel0/0/0
[CX1-Tunnel0/0/0] ip address unnumbered interface LoopBack0 //借用环回地址
[CX1-Tunnel0/0/0] tunnel-protocol mpls te //将隧道协议修改为MPLS TE
[CX1-Tunnel0/0/0] destination 1.1.1.6 //配置目的地址围为1.1.1.6
[CX1-Tunnel0/0/0] mpls te signal-protocol segment-routing //配置MPLS TE的信令为SR
[CX1-Tunnel0/0/0] mpls te tunnel-id 1 //配置隧道ID
[CX1-Tunnel0/0/0] mpls te path explicit-path CX1_CX6  //将显式路径应用到隧道内

 查看隧道状态

可以看到隧道口已经UP了

注:因为SR隧道式是无状态隧道的,只需要本端创建并符合条件转发隧道口就能够UP 

接着我们查看所有隧道

可以看到前往1.1.1.6的TE隧道已经建立成功

6、在CX1和CX6上创建VPN实例并绑定Loopback 1口

[CX1]ip vpn-instance huawei //配置VPN实例
[CX1-vpn-instance-huawei] ipv4-family
[CX1-vpn-instance-huawei]  route-distinguisher 100:1 //配置RD值
[CX1-vpn-instance-huawei-af-ipv4]  vpn-target 100:1 export-extcommunity //配置出向RT值
[CX1-vpn-instance-huawei-af-ipv4]  vpn-target 100:1 import-extcommunity //配置入向RT值
[CX1]interface LoopBack1
[CX1-LoopBack1] ip binding vpn-instance huawei
[CX1-LoopBack1] ip address 11.11.11.11 255.255.255.255 //绑定VPN实例后IP地址会被清空,需要重新配置

[CX6]ip vpn-instance huawei //配置VPN实例
[CX6-vpn-instance-huawei] ipv4-family
[CX6-vpn-instance-huawei]  route-distinguisher 100:1 //配置RD值
[CX6-vpn-instance-huawei-af-ipv4]  vpn-target 100:1 export-extcommunity //配置出向RT值
[CX6-vpn-instance-huawei-af-ipv4]  vpn-target 100:1 import-extcommunity //配置入向RT值
[CX6]interface LoopBack1
[CX6-LoopBack1] ip binding vpn-instance huawei
[CX6-LoopBack1] ip address 66.66.66.66 255.255.255.255 //绑定VPN实例后IP地址会被清空,需要重新配置

7、在CX1和CX6上创建相互的VPNV4的IBGP邻居,并在BGP VPN实例视图引入直连路由

[CX1]bgp 100
[CX1-bgp] peer 1.1.1.6 as-number 100
[CX1-bgp] peer 1.1.1.6 connect-interface LoopBack0
[CX1-bgp]ipv4-family vpnv4 unicast 
[CX1-bgp-af-vpnv4]  peer 1.1.1.6 enable
[CX1-bgp] ipv4-family vpn-instance huawei
[CX1-bgp-huawei] import-route direct

[CX6]bgp 100
[CX6-bgp] peer 1.1.1.1 as-number 100
[CX6-bgp] peer 1.1.1.1 connect-interface LoopBack0
[CX6-bgp]ipv4-family vpnv4 unicast 
[CX6-bgp-af-vpnv4]  peer 1.1.1.1 enable
[CX6-bgp] ipv4-family vpn-instance huawei
[CX6-bgp-huawei] import-route direct

查看BGP邻居状态

 可以看到已经从对端学习到了一条路由了

接着我们查看VPN的路由转发表

可以看到CX1去往CX6的路由已经学到了,但是下一条并没有通过隧道进行转发,接着我们查看这条路由的详细信息,是否存在关于隧道的信息

 

可以看到的确存在隧道的信息,但是我们重新查看隧道表项

 这样可以看到,去往CX6的路由是通过BE隧道进行转发的

注:华为的隧道转发顺序为BE比TE优先,所以在TE和BE同时存在的情况下,优先从BE转发出去了。 

7、创建隧道策略,将TE转发改为优先选择

[CX1]tunnel-policy CX1
[CX1-tunnel-policy-CX1] tunnel select-seq sr-te sr-lsp load-balance-number 1 //配置隧道转发方式的顺序为TE然后再选择BE
[CX1]ip vpn-instance huawei	//进入VPN实例
[CX1-vpn-instance-huawei]tnl-policy CX1 //应用隧道策略CX1

接着我们重新查看VPN实例的路由转发表和详细信息

可以看到去往 CX6的路由下一条已经选择了TE隧道了

最后我们抓包来验证实验效果

去往CX6的数据包会携带BGP分配的内层标签和SR分配的外层标签,也就每台设备的SRGB+index。那么标签就为内层:48120+16006+16004+16003,因为CX2为CX1的下一条,所以这个标签已经弹出了,不会出现在表里面,接着到达CX2、CX3、CX4进行剥离、只剩下内层标签,直接由CX4进行转发。

 因为在CX6没有配置显式路径和隧道策略,所以CX6的回包是通过BE隧道来回的

接着我们查看回包,由于回包走的是BE隧道,所以标签只有内层标签:48060

8、接着我们在CX6上也配置一个显式路径,名为CX6_CX1,同时配置回包的路径为CX6-CX4-CX5-CX2-CX1,让他走下面回来。 

[CX6]explicit-path CX6_CX1 //创建显式路径
[CX6-explicit-path-CX6_CX1] next sid label 16004 type prefix //配置显式路径第一跳
[CX6-explicit-path-CX6_CX1] next sid label 16005 type prefix //配置显式路径第二跳
[CX6-explicit-path-CX6_CX1] next sid label 16002 type prefix //配置显式路径第三跳
[CX6-explicit-path-CX6_CX1] next sid label 16001 type prefix //配置显式路径第四跳

[CX6]tunnel-policy CX6
[CX6-tunnel-policy-CX6] tunnel select-seq sr-te sr-lsp load-balance-number 1 //配置隧道转发方式的顺序为TE然后再选择BE
[CX6]ip vpn-instance huawei	//进入VPN实例
[CX6-vpn-instance-huawei]tnl-policy CX6 //应用隧道策略CX1

 可以看到去往CX1的路由下一跳已经变成Tunnel口了

接在在CX6的0口进行抓包,除了CX4的标签弹出外,路径和我们配置的显式路径完全一样。

 好了我们的实验就到这了,有感兴趣的小伙伴点个赞吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leo·Thomas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值