作为网工有必要了解一下什么是SRv6?
什么是SRv6?
【微|信|公|众|号:厦门微思网络】
【微思网络http://www.xmws.cn,成立于2002年,专业培训21年,思科、华为、红帽、ORACLE、VMware等厂商认证及考试,以及其他认证PMP、CISP、ITIL等】
SRv6(Segment Routing IPv6,基于IPv6转发平面的段路由)简单来讲即SR(Segment Routing)+IPv6,是新一代IP承载协议。其采用现有的IPv6转发技术,通过灵活的IPv6扩展头,实现网络可编程。
SRv6简化了网络协议类型,具有良好的扩展性和可编程性,可满足更多新业务的多样化需求,提供高可靠性,在云业务中有良好的应用前景。
为什么需要SRv6?
传统网络困局
全球信息化的进程使得互联网应用得到了迅速而蓬勃的发展,随着网络规模的扩大以及云时代的到来,网络业务种类越来越多,不同业务对网络的要求不尽相同,传统IP/MPLS网络遇到不少挑战:
-
IP承载网的孤岛问题。MPLS统一了承载网,但是IP骨干网、城域网、移动承载网之间是独立的MPLS域,是相互分离的,需要使用跨域VPN等复杂的技术来互联,导致端到端业务的部署非常复杂。而且在L2VPN、L3VPN多种业务并存的情况下,设备中可能同时存在LDP、RSVP、IGP、BGP等协议,管理复杂,不适合大规模业务部署。
-
IPv4与MPLS的可编程空间有限。当前很多新业务需要在转发平面加入更多的转发信息,但IETF已经发表声明,停止为IPv4制定更新的标准;另外MPLS只有20bit的标签空间,且标签字段固定、长度固定,缺乏可扩展性,导致很难满足未来业务的网络编程需求。
-
应用与承载网隔离。目前应用与承载网的解耦,导致网络自身的优化困难,难以提升网络的价值。当前运营商普遍面临被管道化的挑战,无法从增值应用中获得相应的收益;而应用信息的缺失,也使得运营商只能采用粗放的方式进行网络调度和优化,造成资源的浪费。MPLS也曾试图更靠近主机和应用,但因为其本身网络边界多、管理复杂度大等多方面的原因,均以失败告终。
-
传统网络数据面和控制面紧密耦合,相互绑定销售,在演进上相互依赖,业务上线周期长,难以应对现在新兴业务快速发展的局面。
SRv6的出现解决了上述一系列问题,推动网络进入一个全新的时代。
SRv6技术价值
SRv6是基于IPv6转发平面的SR技术,其结合了SR源路由优势和IPv6简洁易扩展的特质,具有其独特的优势。SRv6技术特点及价值可以归纳为以下三点:
-
智慧:
-
SRv6具有强大的可编程能力。SRv6具有网络路径、业务、转发行为三层可编程空间,使得其能支撑大量不同业务的不同诉求,契合了业务驱动网络的大潮流。
-
SRv6完全基于SDN架构,可以跨越APP和网络之间的鸿沟,将APP的应用程序信息带入到网络中,可以基于全局信息进行网络调度和优化。
-
极简:
-
SRv6不再使用LDP/RSVP-TE协议,也不需要MPLS标签,简化了协议,管理简单。EVPN和SRv6的结合,可以使得IP承载网简化归一。

-
SRv6打破了MPLS跨域边界,部署简单,提升了跨域体验。
-
纯IP化:SRv6基于Native IPv6进行转发。SRv6是通过扩展报文头来实现的,没有改变原有IPv6报文的封装结构,SRv6报文依然是IPv6报文,普通的IPv6设备也可以识别SRv6报文。SRv6设备能够和普通IPv6设备共同部署,对现有网络具有更好的兼容性,可以支撑业务快速上线,平滑演进。另外基于Native IPv6,使得其可以进入数据中心网络,甚至用户终端,促进云网融合。
SRv6基于以上特点,成为构建“智简IP”的利器。同时也为IPv6的发展带来了转机,开启了IPv6+新时代。
什么是Segment Routing?
前面提到,SRv6即SR+IPv6。IPv6大家都知道,那什么是SR呢?
SR技术是SDN竞争压力下的产物,其核心思想是将报文转发路径切割为不同的分段,并在路径起始点往报文中插入分段信息,中间节点只需要按照报文里携带的分段信息转发即可。这样的路径分段,称之为“Segment”,并通过SID(Segment Identifier,段标识)来标识。
SR的设计理念在现实生活中屡见不鲜,下面举一个例子,来更好的理解其原理。假设你从上海出发去巴黎旅游,需要在维也纳转机。那你的出行路线分为两段,上海→维也纳、维也纳→巴黎。则你只需要在上海买好上海途经维也纳到巴黎的票,按照计划根据机票,经过两段,飞到巴黎即可。

上海到巴黎出行图
报文在SR技术的转发过程也是类似的。由上可知,SR技术关键在于两点:对路径进行分段(Segment)以及在起始节点对路径进行排序组合(Segment List),确定出行路径。
在SR技术中,将代表不同功能的Segment进行组合,可以实现对路径的编程,满足不同路径服务质量的需求。
SR技术支持MPLS和IPv6两种转发平面,基于MPLS转发平面的SR称为SR-MPLS(Segment Routing MPLS),其SID为MPLS标签(Label);基于IPv6转发平面的SR称为SRv6,其SID为IPv6地址。
SRv6如何实现网络编程?
SR技术中,通过对Segment的组合,实现路径编程。那SRv6是如何实现网络编程的呢?
SRv6将网络比作计算机,类比计算机编程,将网络承载的业务翻译成发给沿途网络设备的一系列转发指令,从而实现网络编程,满足业务的定制化需求。
SRH
为基于IPv6转发平面实现SR技术,在IPv6路由扩展头新增SRH(Segment Routing Header)扩展头,该扩展头指定一个IPv6的显式路径,存储IPv6的Segment List信息。Segment List即对段和网络节点进行有序排列得到的一条转发路径。报文转发时,依靠Segments Left和Segment List字段共同决定IPv6目的地址(IPv6 DA)信息,从而指导报文的转发路径和行为。

三层可编程空间
SRv6的可编程能力来源于三部分:
-
Segment序列。如前所述,可以将多个Segment组合起来,形成SRv6路径,即路径可编辑。
-
对SRv6 SID 128bit的运用。SRv6 Segment定义了SRv6网络编程中的网络指令,指示要去哪,怎么去。标识SRv6 Segment的ID被称为SRv6 SID。SRv6 SID是一个128bit的值,为IPv6地址形式,由Locator、Function和Arguments三部分组成。

-
Locator:具有定位功能。提供IPv6的路由能力,报文通过该字段实现寻址转发。此外,Locator对应的路由也是可聚合的。
-
Function:用来表达该设备指令要执行的转发动作,不同的转发行为由不同的Function来表达。
-
Arguments:可选字段,是对Function的补充,是指令在执行时对应的参数,这些参数可能包含流、服务或任何其他相关的信息。
-
SRv6的每个Segment是128bit,可以灵活分为多段,每段功能和长度可以自定义,由此具备灵活编程能力,即业务可编辑。
-
Segment序列之后的Optional TLV(Type-Length-Value)。报文在网络中传送时,需要在转发面封装一些非规则的信息,可以通过SRH中TLV的灵活组合来完成,即应用可编辑。
SRv6通过以上三层编程空间,具备了更强大的网络编程能力,可以更好地满足不同的网络路径需求,和SDN技术完美融合,实现网络与应用的互动,使能业务驱动的可编程网络。

SRv6在网络中是如何工作的?
SRv6具有超强的网络编程能力,那其在网络中具体是怎样工作的呢?下面我们通过SRv6报文转发流程和SRv6的工作模式两方面来讲其在网络中的工作实现。
报文转发流程
采用示例说明SRv6的报文转发流程。
如图所示,假设有报文需要从主机1转发到主机2,主机1将报文发送给节点A处理。节点A、B、D、E均支持SRv6,节点C不支持SRv6,只支持IPv6。我们在源节点A上进行网络编程,希望报文经过B-C、C-D链路,送达节点E,由E节点送达主机2。

报文转发流程分为以下几步:
-
源节点A将SRv6路径信息封装在SRH中,指定B-C,C-D链路的SID,另外封装E点发布的SID A5::10(此SID对应于节点E的一个IPv4 VPN),共3个SID,按照逆序形式压入SID序列。此时SL(Segment Left)=2,将Segment List[2]值复制到目的地址DA字段,按照最长匹配原则查找IPv6路由表,将其转发到节点B。
-
报文到达节点B,B节点查找本地SID表(存储本节点生成的SRv6 SID信息),命中自身的SID(End.X SID),执行SID对应的指令动作。SL值减1,并将Segment List[1]值复制到DA字段,同时将报文从SID绑定的链路(B-C)发送出去。
-
报文到达节点C,C无SRv6能力,无法识别SRH,按照正常IPv6报文处理流程,按照最长匹配原则查找IPv6路由表,将其转发到当前目的地址所代表的节点D。
-
节点D收报文后根据目的地址A4::45查找本地SID表,命中自身的SID(End.X SID)。同节点B,SL值减1,将A5::10作为DA,并将报文发送出去。
-
节点E收到报文后根据A5::10查找本地SID表,命中自身SID(End.DT4 SID),执行对应的指令动作,解封装报文,去除IPv6报文头,并将内层IPv4报文在SID绑定的VPN实例的IPv4路由表中进程查表转发,最终将报文发送给主机2。
SRv6工作模式
SRv6工作模式分为两种:SRv6 BE(Segment Routing IPv6 Best Effort)和SRv6 TE Policy(Segment Routing IPv6 Traffic Engineering Policy)。两种模式都可以用来承载传统业务,比如L3VPN、EVPN L3VPN、EVPN VPLS 、EVPN VPWS、公网IP等。
SRv6 TE Policy
SRv6 TE Policy利用Segment Routing的源路由机制,通过在头节点封装一个有序的指令列表(路径信息)来指导报文穿越网络。SRv6 TE Policy用于实现流量工程,提升网络质量,满足业务的端到端需求。其和SDN结合,更好的契合于业务驱动网络的大潮流,也是SRv6主推的工作模式。

SRv6 TE Policy工作流程
SRv6 TE Policy的工作流程可分为四步:
-
转发器(PE3)通过BGP-LS将网络拓扑信息上报给控制器。拓扑信息包括节点链路信息、链路的开销/带宽/时延等TE属性。
-
控制器对收集到的拓扑信息进行分析,按照业务需求计算路径,符合业务的SLA。
-
控制器将路径信息下发给网络的头节点(PE1),头节点生成SRv6 TE Policy。其中包括头端地址、目的地址和Color(扩展团体属性)等关键信息。
-
网络的头节点(PE1)为业务选择合适的SRv6 TE Policy指导转发。转发时,各转发器按照SRv6报文中携带的信息,执行自己发布的SID指令。
SRv6 BE
SRv6 BE类似于MPLS网络中的LDP,是指基于IGP最短路径算法计算得到最优SRv6路径,仅使用一个业务SID来指引报文在链路中的转发,是一种尽力而为的工作模式。其没有流量工程能力,一般用于承载普通VPN业务,用于快速开通业务。
以L3VPNv4 over SRv6 BE为例,讲述SRv6 BE的业务实现。如图所示,网络中部署VPN,PE1和PE2部署SRv6,P部署IPv6。

路由发布阶段:
-
PE2上配置Locator。
-
PE2通过IGP协议将SRv6 SID对应的Locator网段路由2001:DB8:2::/64发布给PE1。PE1安装路由到自己的IPv6路由表。
-
PE2在Locator范围内配置VPN实例的SID 2001:DB8:2::B100,生成Local SID表。
-
PE2收到CE2发布的私网IPv4路由后,将私网IPv4路由转换成BGP VPNv4路由,通过BGP邻居关系发布给PE1。此路由携带SRv6 VPN SID属性,也就是VPN实例的SID 2001:DB8:2::B100。
-
PE1接收到VPNv4路由后,将其交叉到对应的VPN实例路由表,然后转换成普通IPv4路由,对CE1发布。
数据转发阶段:
-
CE1向PE1发送一个普通IPv4报文。
-
PE1从绑定了VPN实例的接口上收到私网报文以后,查找对应VPN实例的路由转发表,匹配目的IPv4前缀,查找到关联的SRv6 VPN SID以及下一跳信息。然后直接使用SRv6 VPN SID 2001:DB8:2::B100作为目的地址封装成IPv6报文。
-
PE1然后按照最长匹配原则,匹配到路由2001:DB8:2::/64,按最短路径转发到P设备。
-
P设备按照最长匹配原则,匹配到路由2001:DB8:2::/64,按最短路径转发到PE2。
-
PE2使用2001:DB8:2::B100查找Local SID表,匹配到SID对应的转发动作,将IPv6报文头去除,然后根据SID匹配VPN实例,查找VPN实例路由表进行转发。报文恢复成普通IPv4报文。

SRv6 vs SR-MPLS
SR技术支持MPLS和IPv6两种转发平面,基于MPLS转发平面的SR为SR-MPLS,基于IPv6转发平面的SR为SRv6。
为什么说SRv6是新一代IP承载协议呢?SRv6相比SR-MPLS有哪些优势呢?

相关文章:
作为网工有必要了解一下什么是SRv6?
什么是SRv6? 【微|信|公|众|号:厦门微思网络】 【微思网络http://www.xmws.cn,成立于2002年,专业培训21年,思科、华为、红帽、ORACLE、VMware等厂商认证及考试,以及其他认证PMP、CISP、ITIL等】 SRv6&…...
Jmeter(十八):硬件性能监控指标详解
硬件性能监控指标 一、性能监控初步介绍 性能测试的主要目标 1.在当前的服务器配置情况,最大的用户数 2.平均响应时间ART,找出时间较长的业务 3.每秒事务数TPS,服务器的处理能力 性能测试涉及的内容 1.客户端性能测试:web前…...
【ARM Trace32(劳特巴赫) 使用介绍 2 -- Trace32 cmm 脚本基本语法及常用命令】
文章目录 Trace32 CMM 概述1.1 Trace32 系统命令 SYStem1.1.1 Trace32 SYStem.CONFIG1.1.2 SYStem.MemAccess1.1.3 SYStem.Mode1.1.3.1 TRST-Resets the JTAG TAP controller and the CPU internal debug logic1.1.3.2 SRST- Resets the CPU core and peripherals 1.2 Trace32 …...
2023年第七期丨全国高校大数据与人工智能师资研修班
全国高校大数据与人工智能 师资研修班邀请函 2023年第七期 线下班(昆明): 数据采集与机器学习实战 线上班(七大专题): PyTorch深度学习与大模型应用实战 数据采集与处理实战 大数据分析与机器学习实战 大数据技…...
一文获取鼎捷医疗器械行业数智化合规敏态方案
医疗器械产业是关乎国计民生的重要产业,高端医疗器械更是“国之重器”。为加强医疗器械的监督管理,提升行业质量和安全整体水平,我国出台了《医疗器械监督管理条例》、《医疗器械召回管理办法》、《医疗器械临床试验质量管理规范》、《医疗器…...
2023最新版本 FreeRTOS教程 -1-标准库移植FreeRTOS
源码下载 官网下载驱动 点击直达 源码剪裁 剪裁之后的图片,找我免费获取 添加进MDK 配置滴答定时器 全部工程获取 查看下方头像...
python笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)
Python 笔记 函数参数 默认参数 在Python中,我们可以为函数的参数设置默认值。如果调用函数时没有传递参数,那么参数将使用默认值。 def greet(nameWorld):print(f"Hello, {name}!")greet() # 输出:Hello, World! greet…...
JAVA命令总结
jps命令的基本语法如下: jps [options] [hostid]其中,options是可选参数,用于指定额外的选项,hostid是可选参数,用于指定在远程主机上执行jps命令。 以下是一些常用的jps命令选项: -q:仅显示…...
删除的PPT怎么找回来?4个必备恢复方法!
“最近的期末展示需要制作一个PPT,我熬了几个大夜才完成了,但是不知道怎么的我在删除其他文件时不小心把这个PPT一起删掉了,有什么方法可以帮我找回这个误删的PPT吗?” 我们在工作和学习中,经常都需要使用到PPT&#x…...
Binder机制总结笔记
Binder机制总结笔记 什么是Binder? Binder的Android特有的IPC通信机制。Android的四大组件Activity、Service、Broadcast、ContentProvider,不同的App等都运行在不同的进程内,他们之间的通信都需要依靠Binder完成。因此Binder在整个Android系…...
SQL SERVER 表分区
1. 概要说明 SQL SERVER的表分区功能是为了将一个大表(表中含有非常多条数据)的数据根据某条件(仅限该表的主键)拆分成多个文件存放,以提高查询数据时的效率。创建表分区的主要步骤是 1、确定需要以哪一个字段作为分…...
从零开始学习PX4源码0(固件下载及编译)
目录 文章目录目录摘要1.重点学习网址2.固件下载1.下载最新版本固件2.下载之前版本固件 摘要 本节主要记录从零开始学习PX4源码1(固件下载)的过程,欢迎批评指正!!! 下载固件主要分为两个版本,之前稳定版本和最新官网发布版本,为什么要下载两个版本,主要是说明两个版本有…...
centos格式化硬盘/u盘的分区为NTFS格式
centos7好像不支持ntfs? 对报这个,ntfs not configured in kernel。 安装了ntfs-3g就可以访问了。 插上u盘查看u盘设备 #查看硬件设备及挂载目录 df -h #查看硬件设备(包括未挂载的) fdisk -l卸载外部设备 umount /dev/sdbxxx …...
【工具】FreePic2PDF+PdgCntEditor|PDF批量添加书签(Windows)
这俩软件都不大,比较便携。 FreePic2PDF: 我下载的来源:https://www.52pojie.cn/thread-1317140-1-1.html(包含下载链接https://www.lanzoui.com/it4x6j4hbvc)下载的结果:https://pan.baidu.com/s/1r8n5G42…...
中移链浏览器简介
(1)简介 生活中,常用的互联网浏览器,是用来检索、展示以及传递Web信息资源的应用程序。用浏览器进行搜索,可以快速查找到目标信息。而对于区块链而言,也有区块链浏览器。 区块链浏览器,是指为用…...
深入浅出排序算法之计数排序
目录 1. 原理 2. 代码实现 3. 性能分析 1. 原理 首先看一个题目,有n个数,取值范围是 0~n,写出一个排序算法,要求时间复杂度和空间复杂度都是O(n)的。 为了达到这种效果,这一篇将会介绍一种不基于比较的排序方法。这…...
大坝水库安全监测终端MCU,智能化管理的新篇章!
我国目前拥有超过9.8万座水库大坝,其中超过95%为土石坝,这些大坝主要是在上世纪80年代以前建造的。这些水库大坝在保障防洪、发电、供水、灌溉等方面发挥了巨大的作用,但是同时也存在一定的安全风险,比如坝体结构破损、坝基渗漏、…...
LeetCode 面试题 16.09. 运算
文章目录 一、题目二、C# 题解 一、题目 请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字,程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。 你的实现应该支持如下操作:…...
spring-代理模式
代理模式 一、概念1.静态代理2.动态代理 一、概念 ①介绍 二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标 方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不…...
我用好说 AI 做二次元人设
你有没有想过自己做一部原创作品? 就像开发《星露谷物语》那样,自己把控作品的 角色、故事、载体、宣传 等方方面面,让 idea 不再只是灵光一闪。 以前是 “万事开头难”,可能第一步都举步维艰。但现在有了 AI 就不同了ÿ…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
