Segment Routing IPv6简介

定义

SRv6(Segment Routing IPv6,基于IPv6转发平面的段路由)是基于源路由理念而设计的在网络上转发IPv6数据包的一种协议。SRv6通过在IPv6报文中插入一个路由扩展头SRH(Segment Routing Header),在SRH中压入一个显式的IPv6地址栈,并由中间节点不断的进行更新目的地址和偏移地址栈的操作来完成逐跳转发。

目的

未来的网络是面向5G时代的网络。面对5G,承载网也需要做出相应的调整。化繁为简,低时延,SDN/NFV化是后续的主要发展方向。

为了5G网络的进一步发展,用户希望能够借用IPv6的地址更简单的实现VPN。SRv6技术就是采用现有的IPv6转发技术,通过扩展IPv6报文的头域,实现类似标签转发的处理。SRv6将一些IPv6地址定义成实例化的SID(Segment ID),每个SID有着自己显式的作用和功能,通过不同的SID操作,实现简化的VPN,以及灵活的路径规划。

SRv6基本原理

SRH

IPv6报文是由IPv6标准头+扩展头(0~n个)+负载Payload组成。为了基于IPv6转发平面实现Segment Routing,IPv6路由扩展头(Routing Header,RH)新增加一种类型,称作SRH(Segment Routing Header)扩展头,该扩展头指定一个IPv6的显式路径,存储的是IPv6的Segment List信息。

头节点在IPv6报文增加一个SRH扩展头,中间节点就可以按照SRH扩展头里包含的路径信息转发。SRH扩展头的格式如图1所示。

图1 SRH扩展头格式

SRH扩展头各字段解释如表1所示。

表1 SRH扩展头字段解释

字段名

长度

含义

Next Header

8比特

标识紧跟在SRH之后的报文头的类型。常见的几种类型如下:

  • 4:IPv4封装
  • 41:IPv6封装
  • 43:IPv6-Route
  • 58:ICMPv6
  • 59:Next Header为空

Hdr Ext Len

8比特

SRH头的长度。指不包括前8字节(前8字节为固定长度)的SRH的长度。

Routing Type

8比特

标识路由头部类型,SRH Type是4。

Segments Left

8比特

到达目的节点前仍然应当访问的中间节点数。

Last Entry

8比特

在段列表中包含段列表的最后一个元素的索引。

Flags

8比特

数据包的一些标识。

Tag

16比特

标识同组数据包。

Segment List[0]~Segment List[n]

128比特

段列表,段列表从路径的最后一段开始编码。Segment List是IPv6地址形式。

  • Segment List[0]是路径的倒数第一个Segment;
  • Segment List[1]是路径的倒数第二个Segment;
  • ...
  • Segment List[n-1]是路径的第二个Segment;
  • Segment List[n]是路径的第一个Segment。

为了便于叙述转发原理,SRH扩展头可以抽象成为图2,其中图2(a)里SID排序是正序,使用<>标识,图2(b)里SID排序是逆序,使用()表示,逆序更符合SRv6的实际封装情况。

图2 SRH扩展头抽象格式

图2(a)里各个字段解释如下:

  • IPv6 DA:IPv6报文的目的地址,简称IPv6 DA。在普通IPv6报文里,IPv6 DA是固定不变的。在SRv6中,IPv6 DA仅标识当前报文的下一个节点,是不断变换的。
  • <Segment List [0],Segment List [1],...,Segment List [n-1],Segment List [n]>:SRv6报文的段列表,在入节点生成。Segment List [0]是SRv6路径上第一个需要被处理的Segment List;Segment List [1]是第二个;Segment List [n-1]是倒数第二个;Segment List [n]是倒数第一个。
SRH的处理过程

在SRv6的SRH里,SL和Segments List信息共同决定报文头部的IPv6目的地址。指针SL最小值是0,最大值等于SRH里的SID个数减一。如图3所示,在SRv6中,每经过一个SRv6节点,SL字段减1,IPv6 DA信息变换一次,其取值是指针当前指向的SID。

  • 如果SL值是n,则IPv6 DA取值就是SID [0]的值。
  • 如果SL值是n-1,则IPv6 DA取值就是SID [1]的值。
  • ...
  • 如果SL值是1,则IPv6 DA取值就是Segment List [n-1]的值。
  • 如果SL值是0,则IPv6 DA取值就是Segment List [n]的值。

如果节点不支持SRv6,则不执行上述动作,仅按照最长匹配查找IPv6路由表转发。

图3 SRH的处理过程

从以上描述可见,节点对于SRv6 SRH是从下到上进行逆序操作。

另外,SRv6 SRH中的Segment在经过节点处理后也不会弹出。这里主要有3个原因:

  1. 最早的IPv6的路由扩展头(RH)设计并没有弹出这个选项。
  2. SRv6 Segment在IPv6包头后面的SRH扩展头中,并且与其他扩展头信息存在关联(如安全加密和校验等),不能简单地弹出。
  3. 因为没有弹出,SRv6报文头保留了路径信息,可以做路径回溯。另外有一些创新考虑对SRH中的保留的Segment进行重用,做一些新的功能扩展。
SRv6 BE

如图4所示,SRv6 BE的报文封装没有代表路径约束的SRH,其格式与普通IPv6报文格式一致,转发行为也与普通IPv6报文转发一致。这就意味着普通的IPv6节点也可以处理SRv6 BE报文,这也是SRv6兼容普通IPv6设备的秘密。

图4 SRv6 BE的结构

SRv6 BE的报文封装与普通IPv6报文封装的不同点在于:普通IPv6报文的目的地址是一个主机或者网段,但是SRv6 BE报文的目的地址是一个业务SID。业务SID可以指引报文按照最短路径转发到生成该SID的父节点,并由该节点执行业务SID的指令。

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

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

相关文章

蓝桥杯练习系统(算法训练)ALGO-971 比较

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给出一个n长的数列&#xff0c;再进行m次询问&#xff0c;每次询问询问两个区间[L1,R1]&#xff0c;[L2,R2]&#xff0c;  …

HarmonyOS NEXT应用开发—Grid和List内拖拽交换子组件位置

介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子组件&#xff0c;到目标List子组件…

数据可视化-ECharts Html项目实战(1)

在之前的文章中&#xff0c;我们学习了如何安装Visual Studio Code并下载插件&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 安装 Visual Studio…

网络管理基础

Linux网络管理 1.网络管理概念 网络接口和名称 &#xff1a;网卡 ip地址 网关 主机名称 路由2.管理工具 net-tools: #安装包 ifconfig netstat 准备要废掉了。iproute: #安装包 ip #提供ip命令3.认识网卡 lo网卡 :本地回环网卡&#xff0c;本机上的服务自己访问自…

MySQL安装(Mac系统)

首先要删除本机原有的mysql 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop不放心可以使用以下命令查询并杀死进程 ps aux | grep mysqld sudo kill <PID>再次尝试停止服务 sudo /usr/local/mysql/support-files/mysql.server stop卸载MySQL&…

【python开发】并发编程(上)

并发编程&#xff08;上&#xff09; 一、进程和线程&#xff08;一&#xff09;多线程&#xff08;二&#xff09;多进程&#xff08;三&#xff09;GIL锁 二、多线程开发&#xff08;一&#xff09;t.start()&#xff08;二&#xff09;t.join()&#xff08;三&#xff09;t.…

Golang协程详解

一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型&#xff0c;协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程&#xff0c;然后在不同的协程中完成不同的子任…

Elasticsearch 主副分片切换过程中对业务写入有影响吗

&#x1f34a;&#x1f349;&#x1f34b; 先说下结论&#xff0c;只要集群中的工作节点过半&#xff0c;有候选的master节点&#xff0c;挂掉的节点中不同时包含索引的主分片和副分片&#xff0c;那么ES是可以做到让业务无感知的进行主副分片切换的。 蓝胖子会先讲解下ES集群写…

Spring Cloud Alibaba微服务从入门到进阶(六)(声明式HTTP客户端-Feign)

Feign是Netflix开源的声明式HTTP客户端&#xff08;只要声明一个接口&#xff0c;Feign就会通过你定义的接口自动给你构造请求的目标地址&#xff0c;并帮助你请求&#xff09; 用Feign重构前面RestTemplate方式的服务间调用 想回顾一下RestTemplate调用 加依赖 项目集成Feig…

最细节操作 Linux LVM 逻辑卷管理

Linux LVM&#xff08;逻辑卷管理&#xff09; 周末愉快&#xff0c;今天带大家实战一下LVM! 一、LVM理论 LVM&#xff0c;即Logical Volume Manager&#xff0c;逻辑卷管理器&#xff0c;是一种硬盘的虚拟化技术&#xff0c;可以允许用户的硬盘资源进行灵活的调整和动态管理…

2025武忠祥考研数学,视频百度网盘+基础全程课程PDF

“得数学者的天下”&#xff0c;25考研首先要开始的就是数学复习&#xff0c;而数学复习首先要开始的必然是高数&#xff01; 很多同学选择了跟着武忠祥老师学习高数&#xff0c;但是具体要怎么学&#xff1f;用什么书&#xff1f;怎么刷题&#xff1f;快来看看以 下的武忠祥…

广东省活动积温空间分布数据

广东省是中国大陆南端沿海的一个省份&#xff0c;位于南岭以南&#xff0c;属于东亚季风区&#xff0c;从北向南分别为中亚热带、南亚热带和热带气候&#xff0c;是中国光、热和水资源最丰富的地区之一。年平均气温约为19℃~24℃&#xff0c;1月平均气温约为16℃~19℃&#xff…

【运维】StarRocks数据迁移到新集群(针对于集群互通、不互通的情况)

文章目录 一. 迁移整体思路1. 对于新旧集群互通的情况2. 对于新旧集群不互通的情况 二、迁移过程&#xff08;两个集群互通的情况&#xff09;1. 备份过程1.1. 通过mysqlclient与starrocks进行关联1.2. 创建仓库与minio建立联系1.3. 备份数据到minio 2. 迁移过程2.1. 通过mysql…

YOLOv9改进策略:注意力机制 | 极化自注意力Polarized Self-Attention,效果秒杀CBAM、SE

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;本文针对Pixel-wise regression的任务&#xff0c;提出了一种更加精细的双重注意力机制——极化自注意力&#xff08;Polarized Self-Attention&#xff09;&#xff0c;效果优于CBAM、SE等经典注意力。 yolo…

R语言实现中介分析(1)

中介分析&#xff0c;也称为介导分析&#xff0c;是统计学中的一种方法&#xff0c;它用于评估一个或多个中介变量&#xff08;也称为中间变量&#xff09;在自变量和因变量之间关系中所起的作用。换句话说&#xff0c;中介分析用于探索自变量如何通过中介变量影响因变量的机制…

docker login 阿里云失败??

docker login 阿里云失败&#xff1f;&#xff1f; 首先参考 阿里云官方文档《Docker登录、推送和拉取失败常见问题》 看看是否是下面提到的情况&#xff1a; 我遇到的情况是超时: [rootk8snode1 software]# sudo docker login --usernametyleryun registry.cn-hangzhou.ali…

Spring Web MVC入门(2)

学习Spring MVC Postman介绍 在软件工程中, 我们需要具有前后端分离的思想, 以降低耦合性. 但是在测试后端代码时,我们还得写前端代码测试,这是个令人头疼的问题. 那么我们如何测试自己的后端程序呢, 这就用到了一个工具: Postman. 界面介绍: 传参的介绍 1.普通传参, 也就…

0基础 三个月掌握C语言(11)

字符函数和字符串函数 为了方便操作字符和字符串 C语言标准库中提供了一系列库函数 接下来我们学习一下这些函数 字符分类函数 C语言提供了一系列用于字符分类的函数&#xff0c;这些函数定义在ctype.h头文件中。这些函数通常用于检查字符是否属于特定的类别&#xff0c;例如…

阿里EMO模型:AI生成表情丰富的视频

引言 在数字多媒体的时代&#xff0c;人们对于互动性和个性化视频内容的需求不断增长。阿里巴巴的EMO&#xff08;Emote Portrait Alive&#xff09;模型&#xff0c;作为一项前沿的人工智能技术&#xff0c;正引领着这一领域的革新之路。 EMO模型概述 EMO模型是阿里巴巴智能计…

linux下重启ORACLE

切换到oracle用户 su - oracle 登录oracle sqlplus / as sysdba 启动数据库 startup 退出数据库 exit 启动监听 lsnrctl start FINISH