Segment Routing Overview

news2025/3/14 0:41:27

大家觉得有意义和帮助记得及时关注和点赞!!!

Segment Routing (SR) 是近年来网络领域的一项新技术,“segment” 在这里 指代网络隔离技术,例如 MPLS。如果快速回顾网络设计在过去几十年的 发展,我们会发现 SR 也许是正在形成的第三代网络设计思想。

第一代是以互联网为代表的无中心式设计, 所有网络节点通过分布式路由协议同步路由信息,这些路由协议包括 IGP(RIP、OSPF、IS-IS)和 EGP(BGP)。

第二代是近些年以 SDN 为代表的集中式设计全局的控制器 了解整张网络的拓扑和状态,可以精确控制网络中每个节点的每条转发规则。代表是 Google 基于 OpenFlow 实现 B4 Network [1]。

以上两代网络的设计思想截然相反,因此必然各有优缺点。SR 此时横空出世,某种程度上 可以看作两者的折中(或优点结合):给定一个源节点和目的节点,集中式控制器(如果有) 只负责选取若干中间节点,形成一条转发路径;而这些中间节点之间还有很多其 他结点,它们之间如何转发及同步路由,都交给分布式算法。这种设计同时兼顾了集中 式控制(若干节点形成的转发路径)和分布式智能(路由同步、链路负载均衡等), 网络的控制粒度从最粗(第一代)到最细(第二代),再到 SR 的粗细适中(第三代)。

SR 实现以上目标的最重要技术之一是源路由(source routing), 每个包在离开源节点时就已经确定了(核心)转发路径,并将路径信息编码到了每个包里。

Segment Routing 一书的作者举了一个形象的例子(这也是他设计 SR 的直接灵感来源):从 Rome 开始到 Brussel [2],翻译成中文就是从上海开车去杭州:没有人会提前规划出路上的每一个转弯, 那太细了。你真正做的是,选出途经的几个重要地方,例如虹桥-松江-嘉兴-余杭- 西湖,只要确保沿着这几个地方向开,就一定能到达。至于两个地方之间,比如虹桥到松江 ,到底是走大路还是小路,要视当时的路况。假如一条路堵了,你可能会当即切换到另一条 路,但松江这个目标不变。(“规划出每一个转弯”的比喻,听上去是在揶揄 OpenFlow SDN 的那帮人。)

和术语 SDN 一样,“SR” 本身只是一个概念,并不是实现。目前 SR 的实现有两种:分别基 于 MPLS 和 IPv6,其中 MPLS SR 与现有的 MPLS 网络兼容,但大大简化了控制平面;而基 于 IPv6 的版本(称为 SRv6)看起来前景更广阔。另外, Linux 4.10 已经初步支持了 SRv6,但性能还比较差 [3]。

  • SR 是如何工作的?
  • SR 举例
  • SR 的好处
    • Ready for SDN
    • 网络无需维护任何应用状态
    • 简化/简单
    • 支持快速重路由(FRR)
    • 适用于大规模数据中心
    • 可扩展
    • 双平面网络(Dual-plane networks)
    • 集中式流量工程
    • Egress Peering 流量工程(EPE)

Segment routing (SR) 是一种基于源路由(source routing)的网络设计。

  • 包从源节点(source node)发出之前转发路径就已经确定了
  • 转发指令(forwarding instructions)以 segment list 的形式编码到每个数据包中
  • Segment list 中的每一个 segment 在路由信息库(Router Information Base,RIB中都有记录
  • 每到达一跳(hop)后,list 最外层的 segment 用于确定下一跳。
  • Segments 以栈的形式(stacked)存储在包头中
    • 如果栈顶 segment 指向的是另一个节点,当前节点就通过 ECMP 将包发送到下一跳:
    • 如果栈顶 segment 指向的是本节点,就 pop out segment,执行下一个 segment 规定的任务。

SR 基于已有的一些内部网关协议(IGP,例如 IS-IS、OSFP 和 MPLS) 来实现高效和灵活的转发。

SR 是如何工作的?

在 SR 网络中,路由器有能力选择任意的转发路径,不管是显式(explicit)指定的路 径,还是 IGP 自动计算出的最短路径。

一个 segment 代表一段子路径(subpath),路由器将可以多段子路径结合起来,形成 一条到达目的节点的最终路径。每个segment 都有一个唯一的标识符(segment identifier ,SID),通过 IGP 的扩展协议在网络中分发。IGP 扩展协议对 IPv4 和 IPv6 都适用。 和传统的 MPLS 网络不同,SR 网络中的路由器不需要 LDP 和 RSVP-TE 协议 来分配和同步 SID,以及对转发信息进行编程。

每个路由器(节点,node)和每个链路(邻接,adjacency)都有相应的 SID。

Node segment ID 是全局唯一的,表示 IGP 确定的到一个路由器的最短路径。网 络管理员从保留的一段范围内为每台路由器分配一个 node ID。

Adjacency segment ID 只在局部有效(locally significant),表示到一个 邻居路由器的具体邻接,例如一个出向接口(egress interface)。Adjacency segment ID 是由路由器自动生成的,范围不会和 node SID 重合。

在 MPLS 网络中,一个 SID 会编码成 MPLS label stack 中的一条纪录项(entry) 。SID 指示应该沿着一条特定的路径转发包。SID 分为两类:

  • Prefix SID:带 IP 地址前缀的 SID,其中的 IP 地址前缀是由 IGP 计算出来的。 Prefix SID 全局(globally)唯一。Node SID 是 Prefix SID的一种特殊情况,其 prefix IP 是 node 自身的 loopbakck 地址。It is advertised as an index into the node specific SR Global Block or SRGB.
  • Adjacency SID:一个 Adjacency SID 就是两个路由器之间的一条链路。Adjacency SID 是和它所属的路由器相关的,因此它只是局部唯一的

SR 举例

图 1 是一张由 5 个路由器组成的 MPLS SR 网络,控制平面基于 IS-IS。Node ID 的范围 是 100-199,Adjacency ID 的范围是 200 及以上。IS-IS 会将 segment ID(这里是 MPLS label)连同 IP Prefix 可达性信息在网络内做通告。

图 1 五个路由器组成的一张 MPLS SR 网络

在这个网络中,任何路由器想向路由器 E 发送流量,必须先将 103(路由器 E 的 node SID)push 到 segment list,以便利用 IS-IS 最短路径转发流量。中间结点的MPLS 标签 交换(label-swapping)过程会保留 103 标签,直到包到达节点 E,如图 2 所示。

图 2 MPLS 标签交换操作

以上是通过 Node SID 实现的转发路径。Adjacency segments 的行为与此不同。例如 ,如果一个包到达路由器 D,栈顶 MPLS label 是 203(D 到 E 的 adjacency SID),D 会先 pop label,然后将包转发给 E。

SIDs 可以组合成有序列表(ordered list)来实现流量工程(traffic engineering, TE)。根据需求的不同,一个 segment list 可以包含:

  1. 多个 adjacency segments
  2. 多个 node segments
  3. 多个 adjacency segments 和 node segments 的组合

上面例子还可以用 node segments 和 adjacency segment 的组合来实现,如图 3 所示:

  1. 首先,路由器 A push label stack(104,203)到每个包
  2. 然后,路由器 A 利用到最短路径和 ECMP 特性将包转发到路由器 D
  3. 最后在路由器 D 经过一个显式的接口(203)到达目的地 E

整个过程中,路由器 A 无需向网络节点声明任何路径信息(保存在每个包中)。网 络的(配置)状态不受这条路径的影响,还是保持原来的配置。也就是说,在保持网络状 态(配置)不变的情况下,A 设置的新路径生效(enforce)了。(作为对比,如果要在 SDN 中网络添加一条新的转发路径,那必然要对整个链路上的所有节点添加配置。)

图 3 组合 Node segments 和 Adjacency segment 到达 E 的路径

SR 的好处

Ready for SDN

SR 被认为是 SDN 的首选架构之一,而且它还是应用工程化路由(Application Engineered Routing,AER)的基础。它在基于网络的分布式智能 (例如链路和节点自动保护)和基于控制器的集中式智能(例如流量优化) 之间取得了很好的平衡。

SR 能够提供严格的网络性能保证、网络资源的高效利用、基于应用的交易( application-based transactions)的高可扩展性。SR 使得网络使用最少的状态信 息(minimal state information)来满足这些需求。

SR 可以很容易地集成到基于控制器的 SDN 架构,下图是一个示例,其中的控制器负责集中 式优化,包括带宽控制。

图 4 SDN 控制器

在这个方案中,SDN 控制器了解整张网络的拓扑和flow。路由器申请到目的地的一条路 径时,声明它期望的特性,例如延迟、带宽、链路多样性。控制器据此计算出一条最优路径, 返回 segment list(例如一个 MPLS label stack)。然后路由器将这个 segment list 编码到包头中,而控制器不需要对网络做任何额外的配置(signaling)。

网络无需维护任何应用状态

无需向网络添加任何应用状态(application state),segment list 就可以实现完全的网 络虚拟化。状态信息以 segment list 的形式编码在每个包中。因为网络只需维护 segment 状态 (node/adjacency segment ID,数量非常少而且变更不频繁),因此可以支持非常大 —— 而且非常高频 —— 的 transaction-based 的应用请求,而不会给网络造成任何负担。

简化/简单

  • 当用于 MPLS 数据平面时,SR 可以通过隧道的方式将 MPLS 服务(VPN、VPLS、VPWS) 从一个 ingress provider edge(供应商边缘路由器)送到一个 egress provider edge,只需要 IGP(IS-IS 或 OSPF),而不需要其他协议
  • 不需要额外的协议(例如 LDP 或 RSVP)来分发标签
  • 可以复用已有网络基础设施,支持 ECMP(使用 node segment ID)

支持快速重路由(FRR)

对任何拓扑都支持快速重路由(Fast ReRoute)。在链路或节点挂掉的情况下,MPLS 依靠 FRR 实现收敛。有了 SR 之后,收敛时间可以做到 50ms 以下。

适用于大规模数据中心

  • 用 BGP 分发 node SID,类似于 IGP 分发 node SID
  • Any node within the topology allocates the same BGP segment for the same switch
  • 支持 ECMP 和 FRR(BGP PIC:Prefix Independent Convergence)
  • 流量工程的基石之一,SRTE

可扩展

  • 避免了 LDP database 中的成千上万的标签
  • 避免了网络中成千上万的 MPLS TE LSP
  • 避免了成千上万的隧道配置

双平面网络(Dual-plane networks)

  • 支持 Dual-plane(MPLS 和 SRv6?),支持跨 plane 的转发策略(disjointness enforcement)
  • 任播(anycast)SID 支持宏策略(macro policy),类似于:“从 node A 注入的、到达 node Z 的 flow 1,必须经过 plane 1 到达”,“从 node A 注入的、目的是 node Z 的 flow 2,必须经过 plane 2 转发”

集中式流量工程

  • 控制器和编排平台可以和 SR 流量工程联动,实现集中式优化,例如 WAN 优化
  • 网络变动,例如拥塞,可以触发应用重新计算 SR TE tunnel 的 placement 方式
  • SR tunnel 可以由编排器通过南向接口(例如 PCE)动态编程
  • 敏捷网络编程,不需要对中间结点和尾节点做任何配置,也不需要对每条 flow 做配置( signaling)

Egress Peering 流量工程(EPE)

  • SR 支持集中式 EPE
  • 控制器指导流量从 ingress provider edge(边界路由器)和内容源(包从边界路由器开 始转发)依照指定的路径和接口到达 egress provider edge
  • 用 BGP “peering” SID 表达源路由域内路径(source-routed inter-domain path)
  • 控制器通过 BGP Link Status(BGP-LS) EPE 路由学习 BGP peering SID 和 egress 边界路由器外部的拓扑
  • 控制器编程控制 ingress 点的期望路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【连续学习之随机初始化算法 】2024Nature期刊论文Loss of plasticity in deep continual learning

1 介绍 年份:2024 期刊:Nature Dohare S, Hernandez-Garcia J F, Lan Q, et al. Loss of plasticity in deep continual learning[J]. Nature, 2024, 632(8026): 768-774. 本文提出的算法是“持续反向传播”(continual backpropagation&a…

【NODE】01-fs和path常用知识点

前言 最近在使用express-generator知识进行搭建前后端通信,其中有些知识点涉及到nodejs的fs和path核心模块,因此另写一篇文章进行介绍和代码案例练习。 fs(文件系统)和 path 是 Node.js 的核心模块,用于文件操作和路径…

两分钟解决:vscode卡在设置SSH主机,VS Code-正在本地初始化VSCode服务器

问题原因 remote-ssh还是有一些bug的,在跟新之后可能会一直加载初始化SSH主机解决方案 1.打开终端2.登录链接vscode的账号,到家目录下3.找到 .vscode-server文件,删掉这个文件4.重启 vscode 就没问题了

干货ScottPlot4向ScottPlot5迁移

干货ScottPlot4向ScottPlot5迁移 干货满满1.背景2.需求的引出3.先说结论1.好消息2.坏消息 4.迁移的部分笔记ColorScottPlot.PlottableScottPlot.Plottables中的对象如何定义添加 ScottPlot.Plottable.ScatterPlot 对象ScatterPolygonMarker也类似 Scatter的marker formsPlot1Re…

Github优质项目推荐(第九期)

文章目录 Github优质项目推荐(第九期)一、【tldraw】,37.1k stars - 在 React 中创建无限画布体验的库二、【zapret】,9.1k stars - 独立(无需第三方服务器)DPI 规避工具三、【uBlock】,48.3k s…

学习threejs,THREE.PlaneGeometry 二维平面几何体

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️HREE.PlaneGeometry 二维平…

力扣矩阵-算法模版总结

lc-73.矩阵置零-(时隔14天)-12.27 思路:(23min22s) 1.直接遍历遇0将行列设0肯定不行,会影响后续判断,题目又要求原地算法,那么进一步考虑是否可以将元素为0,其行列需要设为0的位置给存储下来,最后再遍历根据…

面向对象的设计原则与设计模式

目的 设计模式的目的是提高代码的重用性,可读性、可扩展性、可靠性,使程序呈现高内聚,低耦合的特性 原则 单一职责原则 假设有一个class负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能…

网络安全词云图与技术浅谈

网络安全词云图与技术浅谈 一、网络安全词云图生成 为了直观地展示网络安全领域的关键术语,我们可以通过词云图(Word Cloud)的形式来呈现。词云图是一种数据可视化工具,它通过字体大小和颜色的差异来突出显示文本中出现频率较高…

Jsonlizer,一个把C++各类数据转成 Json 结构体的玩意儿

这段时间突发奇想,觉得可以弄一个Json和C各种数据类型互转的工具,因为Json在进行数据储存的时候,有一些先天的优势,传统的C的序列化方式是将数据序列化到流数据里面,而流数据是典型的串行结构(或则说是一维…

删除拼排序链表中的重复元素(最优解)

题目来源 82. 删除排序链表中的重复元素 II - 力扣(LeetCode) 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head…

OpenHarmony-5.PM 子系统(2)

电池服务组件OpenHarmony-4.1-Release 1.电池服务组件 Battery Manager 提供了电池信息查询的接口,同时开发者也可以通过公共事件监听电池状态和充放电状态的变化。电池服务组件提供如下功能: 电池信息查询。充放电状态查询。关机充电。 电池服务组件架…

深入浅出 Linux 操作系统

深入浅出 Linux 操作系统 引言 在当今数字化的时代,Linux 操作系统无处不在。从支撑互联网巨头庞大的数据中心,到嵌入智能家居设备的微型芯片,Linux 都发挥着关键作用。然而,对于许多人来说,Linux 仍笼罩着一层神秘的…

uniapp 文本转语音

uniapp 文本转语音 基于 Minimax API 的 UniApp 文本转语音工具,支持文本分段、队列播放、暂停恢复等功能。目前只内置了 Minimax文本转语音Minimax 的语音生成技术以其自然、情感丰富和实时性强而著称 API_KEY、GroupId 获取方法 https://platform.minimaxi.com…

前端图像处理(二)

目录 一、上传 1.1、文件夹上传以及进度追踪 1.2、拖拽上传 1.3、图片裁剪上传原理 二、图片布局 2.1、渐进式图片 2.2、图片九宫格 2.3、轮播图(Js) 2.3.1、3D动画轮播图 2.3.2、旋转切换的轮播图 2.4、卡片移入翻转效果 2.5、环绕式照片墙 一、上传 1.1、文件夹…

3.BMS系统原理图解读

一、BMS电池板 (1)电池的连接关系:串联 (2)采样控制点:CELL0 - CELL5 (3)端子P1和P3:BAT和BAT- (4)开关S1:控制充放电回路的机械开关 二、BMS控制板 (1)主控MCU 电源 复位 晶振 (2)LED指示灯:4电量指示 1调试指…

用于汽车碰撞仿真的 Ansys LS-DYNA

使用 Ansys LS-DYNA 进行汽车碰撞仿真汽车碰撞仿真 简介 汽车碰撞仿真是汽车设计和安全工程的一个关键方面。这些仿真使工程师能够预测车辆在碰撞过程中的行为,从而有助于改进安全功能、增强车辆结构并符合监管标准。Ansys LS-DYNA 是一款广泛用于此类仿真的强大工具…

使用Java和不同HTTP客户端库发送各种Content-Type类型请求

1. 引言 在HTTP协议中,Content-Type头用于指示请求或响应中数据的媒体类型。了解和正确设置Content-Type 对于确保客户端和服务器之间正确解析数据至关重要。本文将介绍如何使用Java 和 不同的HTTP客户端发送各种Content-Type 类型的请求。 2. 常见的Content-Type…

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

本篇文章将介绍一个新的改进机制——SMFA(自调制特征聚合模块),并阐述如何将其应用于YOLOv11中,显著提升模型性能。随着深度学习在计算机视觉中的不断进展,目标检测任务也在快速发展。YOLO系列模型(You Onl…

【单片机通讯协议】—— 常用的UART/I2C/SPI等通讯协议的基本原理与时序分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通信基本知识1.1 MCU的参见外设1.2 通信的分类按基本的类型从传输方向上来分 二、UART(串口通讯)2.1 简介2.2 时序图分析2.3 UART的…