目录
基于Adjacency + Node Segment的转发路径
SR-MPLS的标签不是基于LDP下发的,是基于OSPF/ISIS/BGP下发的
简化了MPLS网络的控制平面
SR可以使用控制器或者IGP进行集中算路和分发标签,不再需要RSVP-TE、LDP等隧道协议(SR可以直接应用于MPLS架构,转发平面没有变化)
通过SR可以实现TI-LFA(Topology-Independent) FRR保护(即拓扑无关的备份路径)
在SR的基础上结合RLFA FRR算法,形成高效的TL-LFA FRR算法
可以支持任意拓扑的节点和链路保护,能够弥补传统隧道保护技术的不足
实现100%覆盖率的IP FRR
SR技术更具有网络扩展的能力
SR技术仅在头节点对报文进行标签操作既可以控制业务路径,中间节点不需要维护路径信息(SR技术的标签数量为 全网节点数+本地邻接数,只与网络规模有关,与隧道数量和业务规模无关)
SR技术同时支持传统网络和SDN网络
SR同时支持控制器的集中控制模式和转发器的分布控制模式
SR域(SR Domain)
SR节点(运行了SR技术)的集合
SID(Segment ID)
用于标识唯一的段;在转发平面可以映射为MPLS标签
SRGB(SR Global Block)
用户指定的为SR MPLS预留的全局标签集合(即全局标签的范围)
全局可见,全局有效(LDP的标签是本地有效的,也只有本地才可以看到)
SRLB(SR Local Block)
用户指定的为SR MPLS预留的本地标签集合(即本地标签的范围)
全局可见,但是只在本地有效,主要用于配置Binding SID和Adj SID
默认情况下:SRGB的范围为16000到23999,24000~平台上限 为 动态标签分配
每台设备通过扩展的IGP路由协议通告自己的SRGB和前缀SID的索引(index)
然后设备自己分别根据SRGB和index计算出入站以及出站SID
在实际部署中,建议设备采用统一的SRGB
设备如何生成出、入站标签——索引需要保证全局唯一
入站标签是通过自己的SRGB+收到的索引生成的
出站是通过收到的别人的SRGB+收到额索引生成的,即每个节点对于某个Prefix-SID的出方向标签取决于下游节点的SRGB(去往目的地节点)
下游节点是靠近路由始发节点的方向实例
当设备配置的SRGB是16000 ~17000
配置的前缀SID为16003
会将前缀SID的索引3传递给路由(这个前缀是全局一样的,出入标签不一定全局一样)
所以入标签不一定是全部一样的,但是建议全部一样,即配置相同的SRGB
全局SRGB和基于路由协议的SRGB
默认情况下没有SRGB,可以配置全局SRGB,也可以针对单独的IGP/BGP协议配置SRGB范围
对于IGP协议,IGP下配置的SRGB优先级高于全局SRGB
对于BGP协议,全局下的SRGB高于BGP下配置的SRGB多个范围的SRGB(不建议使用)
可以将多个不相交的标签围所组成SRGB,不过在配置时需要不同设备上的多个范围的SRGB顺序要一致
例如:都给配置为[16000-16999]、[20000-20999]、[17000-17999]
当索引为0~999时通过[16000-16999]计算Prefix-SID
当索引为1000~1999时,通过[20000-201000]计算Prefix-SID
当索引为2000~2999时,通过[17000-17999]计算Prefix-SID
用来生成Adj SID,生成方式同SRGB(为SRLB+索引生成Adj SID)
SRLB的范围为12000~15999
常用的SID主要分为Prefix SID、Node SID、Adjacency SID三种ID方式
Prefix SID(前缀SID)——可以手工配置,也可以采用集中的网管系统实现
Prefix SID用于标识网络中某个目的地址前缀(也就是网段)
一个前缀可以对应多个不同的Prefix SID(针对不同的算法类型可以有不同的Prefix SID),但是一个Prefix SID只能被关联到一个前缀
Prefix SID索引通过IGP协议扩散到其它网元,结合SRGB生成前缀SID
全局可见,全局有效,全局唯一
Node SID(节点SID)——手工配置
SR规范允许将Prefix-SID分配给任何前缀,但是实际上,一般只会将Prefix-SID分配给主机前缀(例如环回口),而分配给主机前缀的Prefix SID又称为Node SID
在节点的Loopback接口下配置IP地址作为前缀,这个LoopBack地址的前缀SID就是Node SID
Node SID是一种特殊的Prefix SID,是Prefix-SID的子类型
Node SID通常作为该节点IGP的“路由器ID”,也是全局唯一,全局可见,全局有效
Adjacency SID(邻接SID)——可以手工配置,可以动态生成
Adj SID也可以手工配置(通过手工配置SRLB生成),动态生成时,是从SRGB之外的标签范围中生成的(以绝对MPLS标签值的方式通告Adj-SID)
Adj SID用于标识网络中的某个邻接(可以理解为接口SID,每个接口都有一个Adj SID)
一个IGP邻接可以有多个关联的Adj-SID
Adj SID通过IGP协议扩散到其它网元,但是只有始发路由器能够解读
因此Adj-SID全局可见,本地唯一,本地有效(只在本地生成标签转发表)
特殊的Segment ID
Anycast SID(任播节点SID)——手工配置
天生支持ECMP, 具有高可用性HA
任播SID用于标识一个到任播地址(此地址网络中存在多个)的IGP前缀SID(指的是一组节点,而不是一个节点)
Anycast常用于无连接服务,使用Anycast地址为这些服务提供负载均衡和冗余(例如DNS服务器)
需要将多台PE设备配置相同的地址(一般为相同Loop地址),使得不同节点为同一个节点SID,也就是Anycast SID,实现ECMP
Adjacency Set SID(邻接SID)
为不同的邻接配置相同的Adj SID,实现不同邻居的负载分担
二层 Adjacency SID
通过链路捆绑Link Bundle或链路聚合组LAG将多个二层接口合并为一个三层接口
能够较少需要维护的IGP邻接的数量(因为IGP邻接只建立在三层接口上)
可以为这个三层接口分配一个三层Adj-SID,也可以为每个二层接口分配一个二层Adj-SID(作用等同于三层Adj-SID)
注意事项
在实际配置过程中,默认情况下,我们一般将Prefix SID都理解为Node SID(因为只有节点SID才可以唯一标识一台设备,Prefix SID不行)
通过按序组合Prefix SID和邻接SID,可以构建出网络内的任何路径
Prefix SID全网唯一,邻接SID只需要本地唯一就可以
Bind SID的作用
Bind SID通过指定一个本地标签,使用此本地标签关联本地的一个SR-MPLS TE隧道或者一个SR-MPLS TE Policy(即Bind SID 6000可以代表标签栈<16001,16003>)
可以减少设备封装的标签栈层数,也可以将多个SR-MPLS TE隧道或者SR-MPLS TE Policy连接(实现跨域)
注意事项
Bind SID一般压在标签栈的最底层
当设备收到与Bindingd SID后,查找本地此标签对应的隧道,然后将数据迭代到这条隧道,可以将两个隧道粘连起来
当不同设备上的SID冲突(一般为Node SID冲突,因为Node SID全局唯一)或同一台设备上的SID冲突时(一般为Adj SID冲突),可以通过标签冲突处理原则来保留较优的SID
冲突类型
前缀冲突(相同的前缀关联了两个不同的SID)
SID冲突(不同的前缀关联的相同的SID)
标签冲突原则
先按照以下规则处理前缀冲突,当没有前缀冲突时再按照以下规则处理SID冲突
1、前缀掩码更大者优先
2、前缀更小的优先
3、SID更小的优先
不需要创建隧道口,只需要将路由迭代进SR建立的标签隧道就可以(同LDP的LSP)
SR-MPLS BE重用传统的MPLS数据平面,MPLS的标签操作、倒数第二跳弹出、TTL处理、TC/EXP处理等技术都适用于SR
SR-MPLS BE LSP的创建(两步)
可以转发器算路、控制器算路
1、进行标签分配/网络拓扑上报(基于控制器创建LSP)
2、进行路径计算
一般手工创建SR-MPLS BE隧道
在SR节点配置SRGB,然后再Loop口配置Prefix SID
之后通过IGP协议携带自己的SRGB+Index向全网扩散
通过接收到的SRGB+Index+自己的SRGB生成相应的出、入标签
SR-MPLS BE如何指导数据转发(将流量引入到隧道进行数据转发)
通过SR技术建立标签转发路径,将流量引入到隧道,然后基于Prefix SID转发(只使用一层Prefix SID实现转发),通过IGP使用最短路径算法计算得到的最优SR LSP
SR-MPLS BE LSP的数据转发(数据转发图在转发路径类型有讲解)
同MPLS,包括标签栈压入(Push)、标签栈交换(Swap)和标签弹出(Pop)
Push:当报文进入SR LSP时,入节点设备在二层首部和IP首部之间插入一个标签(或者根据需要在标签栈顶增加一个新的标签)
Swap:当报文在SR域内转发时,根据标签转发表,用下一跳分配的标签替换SR报文的栈顶标签
Pop:当报文在离开SR域时,根据栈顶的标签查找转发出接口之后,将SR报文的栈顶标签剥掉
倒数第二跳行为 同MPLS LDP
对于Prefix-SID的始发节点可以请求三种倒数第二跳节点行为:
倒数第二跳不弹出:倒数第二跳将数据包顶层的SID标签交换为相同的Prefix-SID出向标签,即倒数第二跳时Prefix-SID不变
倒数第二跳弹出:倒数第二跳再把数据包转发到最后一跳节点之前,去除顶层Prefix-SID标签
倒数第二跳交换为显示空标签:倒数第二跳再把数据包转发到最后一条结点之前,将数据包顶层Prefix-SID标签交换为显示空标签
具体SR-MPLS BE隧道数据转发的例子(以SRGB不同情况为例子)
A设备:A收到数据报文,添加26100并转转发
B设备:B节点收到26100标签,进行标签交换,将26100标签弹出,替换为标签36100
C设备:C节点收到36100标签,进行标签交换,将36100标签弹出,替换为标签16100
D设备:将标签16100弹出,然后继续查找路由转发
注意事项
SR-MPLS BE是一种替代“LDP+IGP方案“的一种新方案
只使用IGP协议就可以完成标签的分发与路径的计算
一般SR-MPLS BE也会作为逃生路径
SR-MPLS TE(段路由流量工程)是使用SR作为控制协议的一种新型的TE隧道技术(取代了传统的RSVP-TE技术)
SR-MPLS TE是通过Tunnel接口来建立和管理的,因此需要在隧道的入节点上配置SR-MPLS TE的隧道接口(将流量引导到隧道口)
SR-MPLS TE 隧道的创建
可以控制器算路、静态配置显式路径算路、转发器算路
控制器算路创建SR-MPLS TE隧道
1、控制器收集网络拓扑信息(有两种方式)
IGP的方式(不推荐)
如果IGP有多个区域,控制器无法知道其它区域的拓扑(域间传递路由信息)
因此控制器还需要与其它区域再相连才可以获得到网络完整的拓扑信息(或者控制器只收集ABR的信息—ABR两边区域的拓扑都有)
BGP -LS的方式(控制器和转发器建立BGP-LS邻居)
2、转发器进行标签分配,并将分配的标签信息上报给控制器
转发器的IGP协议来分配标签,全网通告
转发器与控制器建立BGP-LS邻居信息,并通过BGP-LS将分配的标签上报给控制器
3、控制器计算路径并下发到转发器
控制器通过收集到的网络拓扑信息和标签信息计算出转发路径(标签栈)
然后将标签栈通过PCEP下发到转发器
4、转发器根据控制器下发的路径进行数据转发
转发器根据控制器下发的标签栈信息进行数据转发
手工配置显式路径实现SR-MPPS TE隧道的建立
转发器上通过IGP协议分配标签,然后手工配置显式路径(标签栈)来实现数据转发
SR-MPLS TE如何指导数据转发
SR-MPLS TE可以通过多个SID(多层标签)进行组合来指导数据的转发
- 使用多个Prefix SID实现转发(基于Prefix Segment的转发路径)
- 使用多个Adj SID实现转发(基于Adj Segment的转发路径)
- 使用多个Prefix SID + Adj SID实现转发(基于Prefix + Adj Segment的转发路径)
SR-MPLS TE的数据转发(数据转发图在转发路径类型有讲解)
可以基于Prefix SID转发、基于邻接SID转发、基于邻接SID+Prefix SID转发
传统SR-MPLS TE的不足
- 沿用RSVP-TE的“隧道接口“概念,采用隧道接口实现SR,部分场景无法实现ECMP
- 隧道接口和流量导入独立实现,造成引流方式复杂,性能不高
- 隧道需要预先配置部署
SR Policy介绍
SR Policy是在SR技术基础上发展的一种新的隧道引流技术,抛弃了隧道接口的概念,是当前最主流的实现SR的方式
SR Policy是一段有序的段列表(Segment List),每个段列表是从源到目的地址的端到端路径,并指示网络中的设备遵循此指定路径
SR Policy的分类
SR Policy分为SR-MPLS TE Policy和SRv6 Policy,下文介绍的都是SP-MPLS TE Policy
SR-MPLS TE Policy创建
SR-MPLS TE Policy已经基本上替代了SR-MPLS TE
可以在转发器上静态配置(通过CLI或Netconf)
Endpoint、Color、候选路径的优先级、Segment List等都是必须配置的
也可以由控制器动态生成然后传递给转发器(通过PCEP或BGP SR Policy传递)
控制器通过BGP-LS收集网络拓扑和标签信息
控制器与头端转发器之间建立IPv4 SR-MPLS TE Policy地址族的BGP邻居
控制器计算SR-MPLS TE Policy,然后通过BGP邻居下发给头端
头端生成SR-MPLS Policy表项
当存在多个方式产生(手工配置和控制器下发)的相同SR-MPLS TE Policy时,转发器按照如下原则选择SR-MPLS TE Policy
比较Policy的来源:
值越大越优先(通过BGP接收到的默认值为20,静态配置的默认值为30)
比较Policy的
: ASN为AS编号,ASN和Node-address都是值越小越优先(对于静态配置的Policy,ASN为0,Node-address为0.0.0.0)
比较Discriminator:
值越大越优先(对于静态配置的Policy,此值为Preference的值)
SR MPLS TE Policy所包含的三元组
头端:HeadEnd 生成SR-MPLS TE Policy的节点
颜色:Color SR-MPLS TE Policy携带的扩展团体属性(通过BGP NLRI扩展实现)
配置路由策略,匹配特定路由设置特定的Color属性
然后将此路由策略应用到BGP邻居
尾端:EndPoint SR-MPLS TE Policy的目的地址
SR-MPLS TE Policy模型
一个SR-MPLS TE Policy可以包含多个候选路径(Candidant path),候选路径携带优先级,高优先级的为主路径,次高优先级的作为热备份路径(优先级为唯一的,不同候选路径的优先级不能一致)
一个候选路径可以包含多个Segment List,List携带权重,不同的List形成负载分担
不同候选路径之间做主备,不同List之间做负载
SR-MPLS TE Policy如何控路(将流量引入到隧道进行数据转发)
将节点SID、邻接SID加入到Segment List中进行选路(具体的转发路径同SR-MPLS TE(基于邻接、邻接+Prefix、Prefix转发)
只是数据进入隧道的方式有所改变(将匹配Color和目的地址的流量引导进相关SR-MPLS TE Policy隧道中)
SR隧道建立之后,需要将业务流量引入到SR隧道,然后进行数据转发
不同的隧道建立方式其流量引入方式不同
SR-MPLS BE(无隧道接口)
步骤1:根据路由的一下跳迭代进隧道
将BGP公网路由迭代进SR-MPLS TE隧道(可以配置非标签公网BGP路由迭代、静态路由迭代、L3VPN迭代等)
步骤2:通过隧道策略引入将流量引入到BE隧道
修改隧道优先级顺序
隧道策略的优先级顺序讲解
当同时存在LDP、SR-MPLS BE、SR-MPLS TE隧道时,需要修改隧道策略来选择走什么隧道
按照优先级顺序选择隧道(适用于选择SR-MPLS BE和SR-MPLS TE隧道)
默认情况LDP隧道优先级最高,接下来为SR-MPLS BE、最后为SR-MPLS TE
可以进行修改,使其优先选择SR-MPLS BE或者优先选择SR-MPLS TE
SR-MPLS TE(有隧道接口)
步骤1:通过路由将流量引入到隧道接口进入TE隧道
通过静态路由引入
通过静态将路由的出接口设置为SR-TE的Tunnel接口,实现流量导入
通过自动路由引入
将SR-MPLS TE隧道看作逻辑链路参与IGP路由计算(Tunnel启动IGP进程)
SR-MPLS TE隧道将参与全局的路由计算,使用隧道接口作为路由的出接口
其它节点也可以使用此隧道
通过策略路由引入
在策略路由的执行语句中,使用SR-TE接口作为出接口
可以将匹指定的流量引入到隧道中
通过路由迭代引入
将BGP公网路由迭代进SR-MPLS TE隧道(可以配置非标签公网BGP路由迭代、静态路由迭代、L3VPN迭代等)
步骤2:通过配置隧道策略使其精确选择那条SR-MPLS TE隧道
然后修改隧道优先级顺序或进行隧道绑定,将指定的流量送到指定TE隧道
隧道策略的隧道绑定讲解
通过隧道绑定的方式选择隧道(只适用于选择SR-MPLS TE隧道)
将某个目的地址与某条SR-MPLS TE隧道进行绑定,更加精确
SR-MPLS TE Policy(无隧道接口)
步骤1:将公网路由迭代进SR-MPLS TE Policy隧道
将BGP等公网路由可以根据路由的下一跳迭代到隧道策略中
可以配置非标签公网BGP路由迭代、静态路由迭代、L3VPN迭代等
步骤2:配置隧道策略进行引流(使指定流量选择选择特定的Policy隧道)
配置基于Color引流
直接将基于路由的扩展团体属性Color和目的地址迭代到SR-MPLS TE Policy中
配置基于DSCP引流
不支持按照Color进行路由迭代,而是根据路由的目的地址迭代隧道策略
利用Endpoint匹配到SR-MPLS TE Policy Group
然后再根据报文携带的DSCP查找到对应的SR-MPLS TE Policy转发
基于Prefix Segment的转发路径是由IGP通过最短路径算法计算得出的
如果网络中存在等价路径,则可以实现负载分担(ECMP)
如果网络中不存在等价路径,则可以形成链路备份
所以基于前缀的并不是一条固定路径,头节点无法精准控制报文的整条转发路径
给网络中每个邻接(接口)分配一个Adjacency SID
然后在头节点定义一个包含多个Adj SID的Segment list
通过这种方式可以严格指定一条显式路径,可以更好的配置实现SDN
将Adj SID和Node SID结合起来,通过Adjacency Segment,可以强制整条路径包含某一个邻接。而对于Node Segment,节点可以使用 SPF算法计算最短路径,也可以负载分担。
这种方式的路径并不是严格固定,所以也称作松散路径(Loose Explicit)。
SR与LDP互通,让Segment Routing和LDP协议在同一网络中共同工作
可以在NE3设备帮助NE4、NE5设备下发Prefix SID,使得全网互通
此时要注意,在NE3设备下发Prefix SID时不要进行次末跳弹出,否则会出现路由黑洞
相关配置
NE1、NE2、NE3配置Segment Routing协议(建立MPLS BE隧道)
NE3、NE4、NE5配置MPLS LDP协议
NE3上配置路由前缀和Prefix SID的映射关系(即SR为LDP设备分配Prefix SID)
Segment Routing
Mapping-server prefix-sid 4.4.4.4 32 4
分配的是索引信息,Prefix SID=NE3设备上的SRGB + 此索引信息
NE3上使能本地通告SID标签映射信息的能力
IGP协议下
Segment-routing mapping-server send
NE3上配置触发建立LDP LSP的策略
Mpls
Lsp-trigger segment-routing-interworking best-effort host
NE3上配置向倒数第二跳正常分配标签
Mpls
Label advertise non-null
LDP和SR同时存在的时候,当压入标签时,默认优先压入LDP标签,即默认先走LDP隧道(MPLS VPN的场景,可以使用SR代替LDP)
可以通过配置优先压入SR标签,使流量优先走SR隧道相关配置
NE1、NE2、NE3、NE4、NE5同时配置Segment Routing协议和MPLS LDP协议(前提配置好隧道迭代功能 route recursive-lookup tunnel)
在设备上配置使得流量优先迭代仅SR隧道
Segment-routing
Tunnel-prefer segment-routing