首页 > 其他分享 >HCIE-广域承载解决方案专题01-SR

HCIE-广域承载解决方案专题01-SR

时间:2023-08-29 11:55:21浏览次数:40  
标签:广域 01 HCIE SID MPLS 标签 Segment 路径 SR

HCIE-广域承载解决方案专题01-SR基本概念

1 SR(Segment Routing)概述

1.1 MPLS LDP与RSVP-TE存在的问题

MPLS LDP

image-20230828093427227

  • LDP本身并无算路能力,需依赖IGP进行路径计算
  • 控制面需要IGP及LDP,设备之间需要发送大量的消息来维持邻居关系及路径状态,浪费了链路带宽及设备资源
  • 若LDP与IGP切换过程中未同步,则可能出现数据转发问题

RSVP-TE

相当于更细化的traffic filter

image-20230828093518691

  • RSVP-TE的配置复杂,不支持负载分担
  • 为了实现TE,设备之间需要发送大量RSVP报文来维持邻居关系及路径状态,浪费了链路带宽及设备资源
  • RSVP-TE本质上是分布式架构,每台设备只知道自己的状态,设备之间需要交互信令报文

为了解决以上问题, 业界提出了一个新概念: 业务驱动网络(有业务来定义网络架构)

image-20230828094747104

解决思路就是业务驱动网络,由业务来定义网络的架构——由应用提出需求(时延、带宽、丢包率等),控制器收集网络拓扑、带宽利用率、时延等信息,根据业务需求计算显式路径

根据以上概念, 提出了一个解决思路: Segment Routing

1.2 Segment Routing解决思路

image-20230828095032575

优点:

  • 简化协议

    • 扩展后的IGP/BGP具有标签分发能力(option/tlv), 因此网络中可以无需LDP, 实现协议简化, 减少设备资源占用率.

    • 引入源路由机制: 在头端节点实例化转发策略为标签列表, 控制业务的转发路径

      以上图举例, 控制器收集业务需求和拓扑信息, 根据业务需求发送给R1, 业务流量从控制器发给R1时, R1收到控制器信息后会进行查表来完成路径定义, 根据定义的路径发送给R2(假如), R2收到后无需查表直接按照R1定义的路径进行转发, 后续设备同R2.

  • 业务定义网络:

    • 由应用提出需求(时延、带宽、丢包率等), 然后控制器集中计算显式路径, 最后下发SR路径来承载业务

image-20230828163831554

1.3 SR概述

SR(Segment Routing, 段路由)是基于源路由理念而设计的在网络上转发数据包的一种架构.

SR将网络路径分成一个个段(Segment),并且为这些和网络中的转发节点分配段标识ID。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径.

网络路径类似MPLS中的标签栈机制, 通过标签知道下一跳设备的地址.

SR将代表转发路径的段序列编码数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析*

  • 如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理;
  • 如果不是本节点,则使用ECMP(Equal Cost Multiple Path,等价负载分担)方式将数据包转发到下一节点

SR的特点

  • 通过对现有协议(例如IGP)进行扩展,能使现有网络更好的平滑演进。
  • 同时支持控制器的集中控制模式和转发器的分布控制模式,提供集中控制和分布控制之间的平衡。
  • 采用源路由技术,提供网络和上层应用快速交互的能力

注: 这里讲的SR其实是SR-MPLS

1.4 SR的优势

  • 简化了MPLS的控制平面: 不再需要LDP等隧道协议, 使用控制器或IGP集中计算路径和分发标签
  • 高效TI-LFA FRR保护实现路径故障快速恢复
  • 具有网络容量扩展能力: SR的标签数量: 全网节点数+本地邻接数
  • 更好地向SDN网络平滑演进: 兼容传统网络和SDN网络

2 SR技术原理

2.1 基本概念

2.1.1 Segment

SR会将段信息(Segment)放在数据包中一同发送, 所以设备会根据Segment信息执行动作, 可以理解为Segment就是指代一个动作, 如

  • 指令1: 沿着最短路径(支持ECMP--负载分担)到达R4
  • 指令2: 从R4的G0/0/2接口转发数据包
  • 指令3: 沿着最短路径到达R8

image-20230828165051231

2.1.2 Segment ID & Segment List

Segment ID(SID)用于标识Segment, 作用是将Segment指令转换成一种设备能够识别的语言(如MPLS标签(SR-MPLS)IPv6地址(SRv6)等)

比如将上面的3个指令进行如下转换:

  • 指令1: 沿着最短路径(支持ECMP--负载分担)到达R4---->400
  • 指令2: 从R4的G0/0/2接口转发数据包---->1046
  • 指令3: 沿着最短路径到达R8---->800

第一台设备将SID有序写为一个列表: Segment List

Segment List是一个或多个SID构成的有序列表

image-20230828165429947

2.1.3 源路由

源路由(Source Routing)源节点(R1)选择一条路径并在报文中压入一个有序的Segment List, 网络中的其他节点按照报文封装的Segment List进行转发

源节点也叫源路由设备, 即收到流量的第一台设备

image-20230828170245194

2.1.4 Segment 分类

image-20230828170415569

Segment分类 作用
Prefix Segment(前缀段) 表示网络中某一条路由信息
Adjacency Segment(邻接段) 标识两台设备之间的邻接关系
Node Segment 表示设备上的环回口路由信息, 是一种特殊的Prefix Segment

2.1.5 Prefix Segment

Prefix Segment表示网络中某一条路由信息, 配置方式为手工配置, 通过扩展后的IGP协议通告给其他设备(泛洪), 使用Prefix SID进行标识.

全局可见+全局有效

image-20230828171654334

注: Prefix Segment的信息通常是根据设备通告的SRGB信息自动计算出来的, 但SRGB范围索引值信息为手工配置的, 其他设备收到手工配置的SRGB范围和索引值后会自动计算Prefix Segment, 所以Prefix Segment的配置方式称为手工配置, SRGB范围和索引值后面会讲到.

环回口设置为Prefix之后, 该Prefix Segment就称为Node Segment, 通常用于ECMP负载分担转发(查路由转发)

索引值

索引值(index)是对接口设置的, 索引值结合SRGB才能计算出SID信息

SRGB

SRGB(Segment Routing Global Block):用户指定的为Segment Routing MPLS预留全局标签集合

每台设备通过扩展的路由协议通告自己的SRGB(单独配置, 本地意义)

节点通过扩展的路由协议通告前缀SID索引(index)后,各台设备分别根据SRGB计算入站及出站SID(SRGB+index)

image-20230828171726820

简单来说, 由于SR-MPLS和MPLS都使用一个标签值池, 但有些时候设备不知道当前标签到底是SR-MPLS标签还是MPLS标签, SRGB通过划分一个专属于SR-MPLS的范围来进行区分.

比如我们知道1-16为MPLS LDP一般标签, 16-15999为MPLS LDP预留特殊标签, 16000-1048575为MPLS LDP通常标签, 现在SRGB规定一个范围为20000-25000, 所以MPLS LDP通常标签范围就会变成16000-19999和25001-1048575两段, 中间那段会分给SR-MPLS专用, 避免标签冲突.

在实际部署中,建议设备采用统一的SRGB, 通常设置范围为20000-25000

2.1.6 Adjacency Segment

Adjacency Segment会标识两台设备之间的邻接关系(邻居+方向), 也会通过类似标签的形式标识, 称为Adj SID, 根据IGP协议自动生成.

全局可见+本地有效

image-20230829100758090

Adj SID的取值范围为除了SRGB指定范围和其他标签分发协议之外的标签.

该信息可以传播到整个SR网络, 但Adj SID只有本地意义, 如A--B--C;

A会生成一个Adj SID信息5000, 表示A有一个邻居B, 方向是A->B;

B会生成一个Adj SID信息5000, 表示B有一个邻居A, 方向是B->A;

B会生成一个Adj SID信息5001, 表示B有一个邻居C, 方向是B->C;

C会生成一个Adj SID信息5000, 表示C有一个邻居B, 方向是C->B;

每台设备的标签不会重复, 但不同设备可以使用相同标签, 在网络中表示为A的5000、B的5000、B的5001、C的5000.

A想要去往C, 可以定义以下Adj Segment List: 5000 5001

2.1.7 OSPF/IS-IS for SR-MPLS

三种SID都可以通过扩展后的IGP协议进行传递, IGP们为了支持SR, OSPF使用了不透明LSA-十类LSA传递SR信息, IS-IS使用扩展的TLV信息进行承载, 但这部分内容对于IE考试不重要, 有兴趣可以自己去理解, 这里不做展开.

2.1.8 SR Policy

RFC 8402中定义SR Policy是一段有序的段列表(an ordered list of segments)。更完整的说法是SR Policy最终呈现为一段有序的段列表,还包含了计算、生成和维护这个段列表及引入流量等SR技术的一种框架。SR Policy是当前最主流的实现SR的方式

SR是需要通过控制器对源路由设备指定段列表(Segment List)

控制器上通过业务需求设计出网络的路径, 该策略下发给源路由设备, 源路由设备根据策略, 直接写入整个转发路径

image-20230829103627004

  • 可以有CLI、NETCONF、PECP、BGP SR Policy等多种方式生成
  • 包含Segment List, 完整的指导流量引入和转发

注: ENSP缺少控制器, 无法完成SR Policy实验, 后面试试EVE-NG能不能搞

2.2 SR-MPLS与SRv6

SR-MPLS

image-20230829111247837

SRv6

image-20230829111307754

SR-MPLS SRv6
数据转发平面 基于MPLS 基于IPv6
SID值 MPLS标签值 IPv6地址
其他 段序列被编码为标签栈, 处理段位于栈顶, 处理完成后弹出栈 段序列被编码为标签栈, 使用IPv6扩展头SRH(Segment Routing Header)承载
地位 MPLS-LDP平替 未来大方向、银行和互联网头部已经陆续开始改造

2.3 标签栈、粘连标签与粘连节点

标签栈: 就是集中压入依次弹出, 没啥好说的, 有点数据结构基础都看得懂

image-20230829111917526

粘连标签与粘连节点: 当标签栈深度超过转发器所支持的标签栈深度时,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,然后将这些标签栈关联起来,实现逐段转发

这种特殊的标签称为粘连标签,这个合适的节点称为粘连节点。控制器为粘连节点分配粘连标签,并将其压在标签栈底。

image-20230829111932987

图中R2为粘连节点, 100为粘连标签会在R2转换为下一个标签栈, Segment List为

  • 1013-1032-100
  • 1024-1045-1056

简单理解, 将一台长路径进行分为多段, 每段对应一个标签栈, 每段末尾为粘连节点, 粘连节点会被追加一个粘连标签后压入那段对应标签栈的底部.

标签:广域,01,HCIE,SID,MPLS,标签,Segment,路径,SR
From: https://www.cnblogs.com/konjac-wjh/p/17664389.html

相关文章

  • Cisco SD-WAN (Viptela) version 20.12.1 ED - 软件定义广域网
    CiscoSD-WAN(Viptela)version20.12.1ED-软件定义广域网请访问原文链接:https://sysin.org/blog/cisco-sd-wan-20/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org支持SASE的架构,其集成了面向多云、安全、统一通信和应用优化的各种功能,可用于轻松安全地将任何......
  • 洛谷P1013 [NOIP1998 提高组] 进制位
    P1013[NOIP1998提高组]进制位P1013题目传送门这是一道提高+/省选-的蓝题,有亿点点难度,我们先分析一下。分析字母的数量等于进制的大小,判错的时候,可以看一下那个表格右下角的一个等腰三角形,就会发现有一个由两位字母组成的三角形。我们验算一下,对于\(L\),在该三角形的双位字......
  • 洛谷P5865 [SEERC2018] Tree
    P5865[SEERC2018]Tree题目传送门分析本题不难,只要枚举即可。假设两点之间的距离为树的端点,然后再去枚举其他点,符合的加入集合。若黑色点的个数超出了定义个数,那么就更新一遍。最后求最小值。ACCode:#include<bits/stdc++.h>//保命万能头usingnamespacestd;//命名空......
  • [HAOI2012] 高速公路 题解
    [HAOI2012]高速公路题解题目链接题目要求我们求期望,先考虑一下求期望的公式。根据期望的定义得:期望费用\(E_v=\dfrac{所有可能路线的总费用}{所有可能路线的数量}\).其中,所有可能路线的数量\(=C_{R-L+1}^2=(R-L+1)(R-L)\),可以在常数时间内计算。(这里用大写的\(L\),\(......
  • BUUCTF [HCTF 2018]admin
    寻找破解知识点方法1-Flasksession伪造首先,先注册一个再登录,在changepassword那里查看源码,可以看到有提示:原链接已经404,看的这一个https://github.com/Wkh19/hctf_flask这是一个flask模板,这样来看,这是一道模板注入类型的题目。Session机制详解session可以在此处查看......
  • C笔记---01基础篇
    一、C语言内存分区1、程序代码区:存放CPU执行的机器指令。2、数据区  2.1常量区:字符串、数字等常量存放在常量区,const修饰的全局变量存放在常量区;常量区的内存是只读的,程序结束后由系统释放。  2.2全局区(静态区)又分为两个部分  (a)全局初始化数据区/静态数据区(data......
  • BUUCTF [强网杯 2019]随便注
    判断传参方式,输入1'or1=1,URL传参,所以是get。报错error1064:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMariaDBserverversionfortherightsyntaxtousenear'''atline1报错说明后端参数后面有可能存在其他sql语句,我们......
  • 01 jQuery初使用
    01jQuery初使用jQuery是一个曾经火遍大江南北的一个Javascript的第三方库.jQuery的理念:writelessdomore.其含义就是让前端程序员从繁琐的js代码中解脱出来.我们来看看是否真的能解脱出来.关于jQuery的版本:这里有必要说一下,jQuery一共提出过3个大版本.分别是1.x,......
  • cocos2dx 3.4配置vs2013 + lua环境
    cocos2dx3.4版本及3.4以下版本都可以用cocoside调试lua,说实话,那个编辑比较差,卡就卡半天。我们就用vs来进行调试lua环境配置步骤如下:第1步:安装vs2013第2步,下载插件,地址:https://babelua.codeplex.com/第3步,安装..BabeLuaFor2013.....vsix第4部,安装完后,菜单栏会显示lua菜单,并且会......
  • SP13015 CNTPRIME -Counting Primes
    \(CNTPRIME\)-\(Counting\)\(Primes\)题目描述给定初始序列\(A\),然后对原序列有以下操作:操作\(1\):0lrv将区间\([l,r]\)全赋值为\(v\)。操作\(2\):1lr查询区间\([l,r]\)的质数个数。注意:多组测试和特殊的输出。题目分析:就是一道板子题,首先我们先用欧拉筛筛......