1.SR MPLS
1.1.广域网VPN技术的演进
特殊的EVPN:从L2VPN发展的EVPN
- 以VPLS为例的L2VPN存在多种问题,例如业务部署复杂、网络规模受限、不支持双归等,IETF提出EVPN来解决这些问题
- EVPN最初被设计为一个基于BGP扩展的L2VPN技术,但是随着协议的扩展EVPN同时还支持L3VPN
- EVPN凭借其诸多优势被广泛应用于WAN、DCN(VXLAN的控制层面,使用type4消息)、园区网和SD-WAN等多个场景。
- 在这里,将使用
type5
的消息来传递L3VPN的路由
广域网VPN分类-IP承载技术
- MPLS VPN:底层承载网络使用MPLS/IP作为转发平面。MPLS可以承载L2或L3VPN,如BGP MPLS VPN,VPLS,VPWS,SR-MPLS
- SRv6 VPN,SRv6 VPN底层承载网络使用IPv6作为转发平面。SRv6是以IPv6抵制作为segment的Segment Routing技术,被广泛认为是广域网下一代演进方向
将BGP/MPLS L3 VPN的各种关键技术抽象,可以得到广域网VPN的技术架构,分为了四个功能模块
- 业务接入
- VPN业务隔离
- MP-BGP传递路由信息
- PE之间建立转发隧道
广域网数据平面发展-Segment Routing
- 在广域网VPN中数据平面呈现为数据转发隧道
- 从MPLS发展Segment Routing,常见的转发隧道有MPLS(LDP)、MPLS TE、SR-MPLS和SRv6等
- 广域网支持同时承载多种隧道技术,由用户VPN根据隧道策略选择迭代的隧道
1.2.Segment基本概念
SR(Segment Routing)是基于源路由理念而设计的在网络上转发数据包的一种技术架构。SR MPLS是指基于MPLS转发平面的SR。SR将网络路径分成一个个段,并且为这些段和网络中的转发节点分配段标识ID。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径。
SR将代表转发路径的段序列编码在数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析,如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理;如果不是本节点,则使用ECMP(Equal Cost MultiplePath)方式将数据包转发到下一节点。
使用SR技术,将带来明显的受益:
-
简化MPLS网络的控制平面。
使用控制器或者IGP集中算路和分发标签,不再需要RSVP-TE,LDP等隧道协议。可以直接应用于MPLS架构,转发平面没有变化。 -
提供高效TI-LFA(Topology-Independent Loop-free Alternate) FRR保护,实现路径故障的快速恢复。
在SR技术的基础上结合RLFA(Remote Loop-free Alternate) FRR算法,形成高效的TI-LFA FRR算法。TI-LFA FRR支持任意拓扑的节点和链路保护,能够弥补传统隧道保护技术的不足。 -
更具有网络容量扩展能力。
传统MPLS TE是一种面向连接的技术,为了维护连接状态,节点间需要发送和处理大量Keepalive报文,设备控制层面压力大。SR仅在头节点对报文进行标签操作即可任意控制业务路径,中间节点不需要维护路径信息,设备控制层面压力小。
此外,SR技术的标签数量是:全网节点数+本地邻接数,只和网络规模相关,与隧道数量和业务规模无关。 -
更好的向SDN网络平滑演进。
基于源路由理念而设计,通过源节点即可控制数据包在网络中的转发路径。配合集中算路模块,即可灵活简便的实现路径控制与调整。
同时支持传统网络和SDN网络,兼容现有设备,保障现有网络平滑演进到SDN网络,而不是颠覆现有网络。
Segment是节点针对所收到的数据包要执行的指令,该指令包含在数据包头部中。
指令的例子包括:
- 按照到达目的地的最短路径来转发数据包
- 通过特定的出接口来转发数据包
- 将数据包转发到特定的应用/服务实例等
Segment ID
用于标示segment,它的格式取决于具体的技术实现,例如可以使用MPLS标签、MPLS标签空间中的索引、IPv6地址。
Segment List是一个或多个SID构成的有序列表
源路由
源节点选择一条路径并在报文中压入一个有序的Segment List,网络中的其他节点按照报文封装的Segment List进行转发
Segment分类
Prefix Segment(前缀段)
用于标识网络中某个目的地址前缀。通过IGP协议扩散到其他网元,全局可见,全局有效
通过Prefix SID来进行标识。Prefix SID是发布端通告的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签用于生成MPLS转发表项。
生成方式:手工配置
Node Segment是特殊的Prefix Segment,用于标识特定的节点
在节点的loopback接口下配置IP地址作为前缀,这个节点的prefix SID实际就是node SID
node SID类似IP路由中的目的网络地址,Prefix SID类似IP路由中的目的网络地址
Adjacency Segment(邻接段)
用于标识网络中的某个邻接。通过IGP协议(需要启用SR扩展)扩散到其他网元,全局可见,本地有效
生成方式:源节点通过协议动态分配
Adjacency Segment通过Adjacency Segment ID标识。
Adjacency SID为SRGB范围之外的本地SID
Adjacency SID类似IP网络中的出接口信息(下一跳)
SR Policy
RFC 8402中定义SR Policy是一段有序的段列表(an ordered list of segments)。更完整的说法是SR Policy最终呈现为一段有序的段列表,还包含了计算、生成和维护这个段列表及引入流量等SR技术的一种框架。SR Policy是当前最主流的实现SR的方式。
一个SR Policy由头端节点引导流量进入这个段策略中。它的段列表被精确的分配为标签栈指导流量转发。这个段列表由一系列的优化目标(optimization objective)和限制(constraints,例如时延、亲和性和SRLG等)综合计算得到。这个计算可由本地或者PCE服务器完成,然后可以被通过NETCONF或者PCPE配置。
SR Policy可被用于流量工程(TE)、运行、管理、维护(OAM)和FRR等。
可以由CLI、NETCONF、PCEP、BGP SR-Policy等多种方式生成。华为设备上通过BGP接收的SR Policy优于静态配置。
包含Segment List,完整的指导流量引入和转发
SR-MPLS和SPv6
SR-MPLS
需要利旧现有设备的用户适用
数据转发平面:基于MPLS
使用MPLS标签值作为SID
段序列被编码成标签栈。要处理的段位于栈顶,一个段处理完成后,相关标签从标签栈中弹出
SRv6
数据转发平面:基于IPv6
使用IPv6地址作为SID值
段序列被编码为标签栈,使用IPv6的扩展头SRH(Segment Routing Header)承载
SRGB
Segment Routing Global Block
用户指定的为Segment Routing预留的本地标签集合
每台设备通过扩展的路由协议通告自己的SRGB
节点通过扩展的路由协议通告前缀SID索引(Index)后,各台设备分别根据SRGB计算入站和出站SID
在实际部署中,建议设备采用统一的SRGB
为什么需要SRGB:SR要求前缀SID全局有效。在MPLS中,设备的一部分标签空间可能被其他协议,例如LDP占用,因此需要制定明确的空间用于SR全局标签
标签栈、粘连标签与粘连节点
标签栈
标签栈是标签的排序集合,用于表示一条完整的LSP
标签栈中每一个邻接标签标识一条具体的邻接,整个标签栈标识了整条转发路径LSP的所有邻接
在报文转发过程中,通过标签栈中每个邻接标签查找对应的邻接,并将标签弹出后转发,将标签栈中所有邻接标签弹出后,报文就走完了整条LSP,到达SR-TE隧道的目的地
粘连标签与粘连节点
100就是粘连标签,R2是粘连节点
当标签栈深度超过转发器所支持的标签深度时,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,然后将这些标签栈关联起来,实现逐段转发
这种特殊的标签被称为粘连标签,这个合适的节点成为粘连节点。控制器为粘连节点分配粘连标签,并将其压在标签栈底。
1.3.Segment基本原理
SID的使用
通过按序组合前缀(节点)SID和邻接SID,可以构建出网络内的任何路径。
在路径的每一跳,使用栈顶段信息区分下一跳
段信息按照顺序堆叠在数据头的顶部
当栈顶段信息包含另一个节点的标识时,接收节点使用等价多路径(ECMP)将数据包转发到下一跳
当栈顶段信息是本节点的标识时,接收节点弹出顶部段并执行下一个段所需的任务。
实际应用中Prefix Segment、Adjacency Segment、Segment可以单独使用,也可以结合使用
场景1:基于Prefix Segment的转发路径
- 由IGP通过最短路径算法(IGP)计算得出
通过IGP扩散之后,整个IGP域的所有设备学习到R2的Prefix SID(100)
以R1为例(其他设备类似),它通过SPF算法计算出一条到达R2的最短路径
基于Prefix Segment的转发路径并不是一条固定路径,头节点也无法控制报文的整条转发路径。
场景2:基于Adjacency Segment的转发路径
通过给网络中每个邻接分配一个Adjacency Segment,然后在头节点定义一个包含多个Adjacency Segment的Segment List。
通过这种方式可以严格制定任意一条显示路径(Strict Explicit),可以更好的配合实现SDN
场景3:基于Adjacency Segment+Node Segment的转发路径
将Adjacency Segment和Node Segment结合,通过Adjacency Segment,可以强制整条路径包含某一个邻接。而对于Node Segment,节点可以使用SPF算法计算最短路径,也可以负载分担。
这种方式的路径并不是严格固定,所以也称作松散路径(Loose Explicit)
SR-BE
使用一个SID来知道设备基于最短路径进行数据转发,这种工作机制称为SR-BE(Best Effort)
例如在本例中使用R6的Node SID 606可以指导数据沿着去往R6的最短路径来转发数据,该最短路径是基于路由协议计算得出的,并且支持等价路径。
SR-BE是一种替代“LDP+IGP”的一种新方案
SR-TE
使用多个SID进行组合来知道数据转发,这种工作机制可以对数据的转发路径进行一定约束,从而满足流量工程需求,因此被称为SR-TE(Traffic Engineer)
SID的组合形式:
- 使用多个Node SID
- 使用多个Adjacency SID
- 使用Node SID与Adjacency SID组合,如图中所示
虽然可以手工配置,但真实生产环境中,SR-TE都是有控制器参与路径算的
1.4.SR-TE
分段路由流量工程SR-TE是使用SR作为控制协议的一种新型的TE隧道技术。SR-TE隧道是指基于TE的约束属性,利用SR协议创建的隧道
SR-TE一般由控制器计算隧道的转发路径,然后将与路径严格对应的标签栈下发给转发器
SR-TE的实现当前有隧道借口和SR Policy两种方式
1.4.1 隧道接口实现
集中式SR-MPLS TE功能架构
SR-MPLS TE(Segment Routing-MPLS Traffic Engineering)是使用SR作为控制协议的一种新型的TE隧道技术。SR-MPLS TE支持采用集中式架构,控制器收集全局网络拓扑信息和TE信息,集中算路,然后把算路结果下发给网络设备。
SR-MPLS TE也支持使用手工方式配置。
- 扩展IS-IS/OSPF携带TE信息,在域内泛洪IGP和TE信息,生成TEDB。
- 通过BGP-LS收集网络信息,建立全局TE数据库。
- 控制器基于约束全局算路。
- 使用PCEP或BGP SR Policy将算路结果下发设备。
和RSVP-TE比较
比较项 | SR-MPLS TE | RSVP-TE |
---|---|---|
标签分配 | 通过对IGP协议扩展进行标签分配和扩散。每条链路仅分配一个标签,所有的LSP共用这一个标签,减少了标签资源的占用,减轻了标签转发表的维护工作量 | 通过对RSVP协议扩展进行标签分配和扩散。每条LSP分配一个标签,当有多条LSP时,同一条链路上需要分配多个标签,标签资源占用的多,标签转发表的维护工作量大 |
控制平面 | 信令控制协议为IGP协议扩展,减少协议数量 | 需要RSVP-TE作为MPLS的控制协议,控制平面较复杂 |
可扩扎性 | 网络中间设备不感知隧道,隧道信息携带在每个报文中,无需维护隧道状态信息,只需维护转发表项,可扩展性强 | 需要维护隧道状态信息,也需要维护转发表项,可扩展性差 |
路径调整和控制 | 网络中间设备不感知隧道,仅通过对入节点的报文进行标签操作即可任意控制业务路径,无需逐节点下发配置。当路径中的某个节点发生故障,由控制器重新计算路径并更新入节点的标签栈,即可完成路径调整 | 无论是正常业务调整还是故障场景的被动路径调整,都需逐节点下发配置 |
网络拓扑收集
- 转发器的IGP协议收集网络拓扑信息,收集SR的邻接标签和节点标签。
- BGP-LS将带有SR标签信息的网络拓扑和TE信息上报给控制器。
对于使能了SR能力的IGP,会为所有使能IGP协议的出接口分配SR邻接标签。邻接标签通过IGP泛洪到整个网络中。
标签分配
SR-MPLS TE方案中由转发器的IGP协议分配标签,并通过BGP-LS将分配的标签上报给控制器:
- SR-MPLS TE主要使用邻接标签,也可以使用节点标签。
- 邻接标签是源节点分配的,只在本地有效,并且具有一定的方向性。
在设备上分别使能IGP SR能力。对于使能了SR能力的IGP实例,会对所有使能IGP协议的出接口分配SR邻接标签。
邻接标签通过IGP的SR协议扩展,泛洪到整个网络中。
以R4为例, IGP分配标签的具体过程如下:
- R4的IGP协议为其邻接分配本地动态标签。例如为邻接R4->R5分配的邻接标签为1045。
- R4的IGP协议发布邻接标签,泛洪到整个网络。
- R4上生成邻接标签对应的标签转发表。
- 网络中的其它设备的IGP协议学习到R4发布的邻接标签,但是不生成标签转发表。
其他设备按照R4的方式分配和发布邻接标签,生成标签转发表。BGP-LS将带有SR标签信息的网络拓扑和TE信息上报给控制器。
LSP的创建
SR-MPLS TE(Segment Routing-MPLS Traffic Engineering)是指基于TE的约束属性,利用SR创建的隧道。如图所示两条LSP分别作为主路径和备份路径。两条LSP隧道都对应同一个隧道ID的SR-MPLS TE隧道。
隧道属性配置
SR-MPLS TE隧道的属性是创建隧道的依据。SR-MPLS TE隧道可以在控制器或转发器上配置。
控制器上配置隧道:在控制器上进行SR-MPLS TE隧道配置后,控制器将隧道属性通过NETCONF下发给转发器,转发器通过PCEP协议将隧道托管给控制器进行管理。
转发器上配置隧道:在转发器上进行SR-MPLS TE隧道配置后,转发器将隧道托管给控制器进行管理。
手工隧道
[R1] interface tunnel1
[R1-Tunnel1] ip address unnumbered interface LoopBack0
[R1-Tunnel1] tunnel-protocol mpls te
[R1-Tunnel1] destination 3.3.3.3
[R1-Tunnel1] mpls te tunnel-id 1
[R1-Tunnel1] mpls te signal-protocol segment-routing
[R1-Tunnel1] mpls te path explicit-path p1 #手工指定路径
控制器NETCONF下发隧道
[R1] interface tunnel1
[R1-Tunnel1] ip address unnumbered interface LoopBack0
[R1-Tunnel1] tunnel-protocol mpls te
[R1-Tunnel1] destination 3.3.3.3
[R1-Tunnel1] mpls te tunnel-id 1
[R1-Tunnel1] mpls te signal-protocol segment-routing
[R1-Tunnel1] mpls te pce delegate #托管给PCE Server
SR-MPLS TE隧道是通过Tunnel接口来建立和管理的,因此需要在隧道的入节点上配置SR-MPLS TE隧道接口。
隧道建立过程
当配置了某种业务(例如VPN业务)时,该业务需要绑定到SR-MPLS TE隧道,将按照以下过程建立SR-MPLS TE隧道:
- 控制器基于SR-MPLS TE的隧道约束属性,通过路径计算单元PCE(Path Computation Element)进行类似普通TE的路径计算,生成一个标签栈(即算路结果)。
- 控制器通过NETCONF将隧道配置信息下发给转发器、通过PCEP将标签栈下发给转发器。
- 转发器根据控制器下发的隧道配置和标签栈信息建立SR-MPLS TE隧道LSP。
优势:
- 支持带宽计算与资源预留。
- 可以站在全局视角计算最优路径。
- 控制器可以与应用配合,由应用提出网络诉求,控制器计算满足诉求的转发路径,实现业务驱动网络。
- 省去大量的手工配置,适合大规模网络。
1.4.2 SR-TE policy
早期SR-TE的不足
早期的SR-TE沿用RSVP-TE的“隧道接口”的概念,采用隧道接口实现SR。其典型特征如下所示,在配置上和流量导入中均出现Tunnel接口。
[R1] interface tunnel1
[R1-Tunnel1] ip address unnumbered interface LoopBack0
[R1-Tunnel1] tunnel-protocol mpls te
[R1-Tunnel1] destination 3.3.3.3
[R1-Tunnel1] mpls te tunnel-id 1
[R1-Tunnel1] mpls te signal-protocol segment-routing
...
隧道接口方式实现SR简单且易于理解,但是有以下不足:
- 隧道接口和流量导入独立实现造成引流方式复杂和性能不高
- 隧道需要预先配置部署,在无法明确隧道终点场景下有明显限制
- 基于隧道接口实现的ECMP使用场景受限
SR-TE Policy介绍
SR-TE Policy是SR Policy在流量工程领域的使用。它依然使用段列表(Segment List)指定转发路径,但是抛弃了隧道接口的概念。
SR-TE Policy根据Segment不同分为SR-MPLS TE Policy和SRv6 TE Policy,这里主要介绍前者
SR Policy-般由控制器使用代表业务SLA的Color属性计算路径,下发转发器生成SR TE Policy隧道(如图所示转发器上隧道信息不同于SR-TE隧道)。网络头端结点通过扩展业务路由的Color团体属性和下一跳信息匹配到对应的SR Poilcy隧道进行业务转发。
SR Policy是当前主流厂家的实现SR-TE的方式。
<PE1> display tunnel-info all
Tunnel ID Type Destination Status
0x0000000001004c4c04 srv6tepolicy 1.0.0.12 UP
0x000000002900000004 dp 1.0.0.12 UP
0x000000000300002001 srbe-lsp 1.0.0.12 UP
0x00000000320000c001 sr-te 1.0.0.12 UP
0x000000003400002001 srtepolicy FC01::12 UP
SR Policy标准介绍
RFC-draft-ietf-spring-segment-routing-policy中提出,BGP多协议扩展新增地址族BGP SR-Policy(SAFI=73)用于下发SR-TE Policy
- 控制器通过BGP下发SR的SID组合给Ingress节点。在头端节点创建出一条道Egress节点的、带Policy Color的TE隧道
- 当需要引用此隧道时,可以使用Policy Color对应到隧道。
SR Policy方案架构
在华为的解决方案中,控制器到设备之间包含三种关键协议:
BGP-LS
:用于收集隧道拓扑信息、网络带宽、链路时延等并上报隧道状态,用于计算SR Policy路径和隧道状态呈现BGP SR-Policy
:用于控制器下发SR Policy信息(color,headend、endpoint等)NETCONF
用于下发业务接口、路由策略(添加color属性)等其他配置
SR Policy三元组
<headend, color, endpoint>
hearend
-头端,SR Policy生成的节点,一般是全局唯一的IP地址color
-颜色,32bit扩展团体属性,用于标识某一种业务意图(例如低延时)endpoint
-尾端,SR Policy的目的地址,一般是全局唯一的IP地址
Color和endpoint被用于SR Policy在特定头端标识转发路径
SR Policy模型
一个SR Policy可以包含多个候选路径(Candidate Path)。候选路径携带优先级属性(Preference)。优先级最高的有效候选路径为SR Policy的主路径,优先级次高的有效路径为SR Policy的热备份路径。
一个候选路径就是SR Policy通过PCEP或者BGP SR Policy向头端发送的信号单元
SR policy P1 <headend, color, endpoint>
Candidate-path CP1 <protocol,origin,discriminator>
Preference 200
Weight W1, SID-List1 <SID11 ... SID1j>
Weight W2, SID-List2 <SID21 ... SID2j>
Candidate-path CP2 <protocol,origin,discriminator>
Preference 100
Weight W3, SID-List3 <SID31 ... SID3j>
Weight W4, SID-List4 <SID41 ... SID4j>
配置示例
- 手工配置Segment List
segment-routing
segment-list backuplist
index 1 sid label 331140
index 2 sid label 331450
segment-list backuplist2
index 2 sid label 331340
index 3 sid label 331350
segment-list mainlist
index 1 sid label 331130
index 2 sid label 331350
segment-list mainlist2
index 2 sid label 331340
index 3 sid label 331450
- 手工配置SR policy
sr-te policy P1
binding-sid 200
endpoint 5.5.5.5 color 100
mtu 9600
#
candidate-path preference 2000
segment-list mainlist
segment-list mainlist2
#
candidate-path preference 1000
segment-list backuplist2
#
candidate-path preference 1
segment-list backuplist
SR Policy业务流程
背景:R3作为Egress路由器向Ingress路由器R1通告路由5.5.5.5/32,最终从R1-R3建立SR Policy隧道。隧道路径如图,Color为Green。
1.信息收集
BGP-LS扩展收集网络拓扑及标签信息,用于计算SR Policy路径和隧道状态呈现
其他操作:可以在控制器图形化界面上规划源路径R1、目的R3、引流策略(Color)等信息。控制器进行算路。
2.路由着色
控制器通过NETCONF向Egress路由器下发VPN出口策略或BGP出口策略。为路由前缀5.5.5.5/32设置扩展团体属性Color Green,路由下一跳是R3的地址3.3.3.3
3.路由传递
Egress路由器将着色的路由5.5.5.5/32通过MP-BGP通告给Ingress路由器。
4.下发SR Policy
控制器向头端下发SR Policy。R1接收到R3的BGP路由5.5.5.5/32.后续执行转发时,根据此路由的Color和下一跳迭代到SR Policy隧道。
SR Policy:
Color: Green
Endpoint: 3.3.3.3
Attribute:
BSID: 30028
Candidate path count: 1
Preference: 100
SegmentList:
Label: 20004, 20003
5.引流及报文转发
Ingress路由器将SR Policy生成转发面隧道。头节点根据Color完成引流转发及转发(本例)。
支持其他引流方式,例如DSCP