SRv6技术

2024-03-19 19:36
文章标签 技术 srv6

本文主要是介绍SRv6技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • SRv6
    • SR
    • SRv6
      • SRH
      • SID
      • srv6报文转发过程
    • SRv6技术的特点

SRv6

SRv6(Source Routing in IPv6)是一种IPv6扩展,结合了Segment Routing(SR)和IPv6两种技术。它允许数据包的发送者指定其路径,而不是依赖于网络的中间节点来确定数据包的路径。SRv6的核心原理是在IPv6数据包头部的扩展标头中指定数据包的路径,从而使网络节点可以根据这些指示来转发数据包。

SR

Segment Routing(SR)是基于源路由理念而设计的在网络上转发数据包的一种协议。它将网络路径分成一个个段,并且为这些段和网络节点分配Segment ID(SID)。通过对SID进行有序排列(Segment List), 就可以得到一条转发路径。

而传统路由中,数据包本身是不知道路径的,它被路由器转发时,路由器知道下一跳的地址。

举个例子,从南昌坐高铁到长沙,中途会经过宜春和萍乡北两站。传统路由模式需要在南昌买票到宜春,到达宜春后买票去萍乡北,到萍乡北后再买票到长沙。但在SRv6模式,可以直接买从南昌到长沙的票,可以预知所经过的节点,到达各站点只需出示一下我买的票即可。

SRv6

SRv6的原理可以简要描述如下:

  1. Segment Routing Header (SRH):为了实现srv6,ipv6报文进行了一些扩展,新增了一种扩展头Segment routing header简称srh,分段路由头,用于指定数据包的路径。SRH包含一系列的"段"(Segments),每个段代表网络中的一个节点或一组节点。网络中间节点可以不支持srv6。但头节点必须支持srv6。
  2. Segment Identifier (SID):每个节点在网络中被分配一个唯一的标识符,称为Segment Identifier(SID)。这些SID用于标识网络中的节点或链路。
  3. Instructions for Packet Processing:发送者通过在IPv6数据包头部的SRH中指定一系列的SID来定义数据包的路径。每个SID代表数据包在网络中经过的节点或链路。
  4. Network Node Processing:网络中的节点根据SRH中指定的SID来转发数据包。当数据包到达一个节点时,该节点查找SRH中的下一个SID,并将数据包转发到对应的节点或链路。
  5. Flexible Path Selection:SRv6允许发送者在数据包传输过程中动态地调整路径,而无需对网络进行特定配置。这使得网络具有更大的灵活性和可编程性。srv6的网络路径可以编程,业务可以编程,转发行为可以编程,srv6是完全基于架构的,能够跨越APP和网络之间的鸿沟。将APP的应用程序信息带入到网络之中。

srv6报文格式

在这里插入图片描述

Net Header取值:4 ——IPv4封装,41——IPv6封装,43——IPv6-Route(IPv6路由扩展头),58——ICMPv6,59——Next Header为空

srv6网络节点:

头节点
在这里插入图片描述

不支持srv6的中间节点
在这里插入图片描述

SRH

Segment routing header简称srh,分段路由头。

srh有两个关键信息:

  • 首先是ipv6地址形式的Segment list。这是一个由IPv6地址形式的有序列表,表示了数据包在网络中传输的显式路径。每个IPv6地址代表一个路由段(Segment),这些路由段按照列表中的顺序构成了数据包的传输路径。
  • 另外一个关键字段是Segment left (sl)。Segment left是一个指针,指针它指向当前活跃的一个list,它的初始值是0,表示从列表的第一个路由段开始,每次经过一个节点,SL的值就减1,直到减到0为止。SL的最大值是Segment List长度减1,即最后一个路由段的位置。
    在srv6里ipv6的目的地址sl字段是一个不断变化的字段。当指针指向当前活跃的list时,需要将list的ipv6地址复制到ipv6目的地址字段。
  • 在SRv6的网络节点处理过程中,如果节点支持SRv6,它将检查SL的值。如果SL指向的是当前节点所对应的路由段,节点将执行以下操作:
    1. 将SL值减1,更新SL字段。
    2. 将新的Segment List信息复制到IPv6目的地址字段,即将当前路由段的IPv6地址作为新的目的地。
    3. 将数据包转发给下一个节点。
  • 如果有一个转发节点不支持ipv6,那么不需要处理ipv6报文里的srh信息。仅依据ipv6目的地址字段查找ipv6路由表,进行普通转发。

当Segment Left字段减为零时,节点会弹出SRH报文头,然后对报文进行进一步的处理,这可能包括查找传统的IPv6路由表中的下一跳地址,或者如果报文已经达到了最终目的地,则进行相应的终节点处理。

SID

SID(Segment Identifier)由locator、function、argument三部分组成,这三个部分共同构成一个128位的ipv6地址,其中argument字段是可选的,可以不带。locator一般是手工配置,function可以手工配置,也可以由IGP/BGP动态分配

  • locator(位置标识):网络中分配给一个网络节点的标识,可以用于路由和转发数据包。Locator有两个重要的属性,可路由和聚合。在SRv6 SID中Locator是一个可变长的部分,用于适配不同规模的网络。
  • Function(功能):设备分配给本地转发指令的一个ID值,该值可用于表达需要设备执行的转发动作,相当于计算机指令的操作码。在SRv6网络编程中,不同的转发行为由不同的功能ID来表达。一定程度上功能ID和MPLS标签类似,用于标识VPN转发实例等。
  • Args(变量):转发指令在执行的时候所需要的参数,这些参数可能包含流,服务或任何其他相关的可变信息。

注:
路由器收到SID,先判断Locator,如果发现Locator是本机发布的,那就去处理Function指令(可以将Locator理解为前缀,在转发时使用;Funcation只有到达目的节点(到达响应Locator前缀对应的节点)之后才会查看)

严格意义上来说Segment List并不是IPv6地址,只是以IPv6地址的形式存在

只有将Segment List拷贝到IPv6报文的Destination Address字段中的才是IPv6地址

一台设备只有一个Locator,并且全网唯一

一台设备可以有多个Function,并且只需要保证本地唯一就可以

在这里插入图片描述

SID有很多种不同类型:

  • End SID(ndpoind SID):这种SID代表网络中的一个目的节点,他给设备的指令是处理srh,更新ipv6目的地址字段,然后查找ipv6路由表进行报文转发
  • end.x SID:代表的是网络中的一个邻接,他给设备的指令是处理srh,更新ipv6目的地址字段,然后从end.x sid指定的出接口转发报文
  • end.dt4(6) sid:是一种pe类型的sid,主要用于ipv4(6)场景,标识网络中的VPN实例,他给设备的指令是解封装报文,去除外层的srh和ipv4(6)报文头,然后根据剩余报文里的目的地址查找ipv4(6) vpn实例路由表进行转发
  • end.dx4(6) sid:用于标识网络中的某个IPv4(6) CE,他给设备的指令是解封装报文,并将解封装后的IPv4(6)报文在该SID绑定的三层接口上转发。假如有多个接口绑定相同的IPv4(6)实例,可以通过End.DX4(6)来决定走那个接口,将其送到VRF对应的接口
  • End.OP SID:是一个OAM类型的SID,主要用于测试(Ping、Tracert场景)。SRv6中,直接ping End SID是ping不同的,由于报文中的Flag中O没有置位,End SID收到后是不会响应的,此时就需要End.OP SID,直接ping End.OP SID是可以ping通的。End.OP SID一般手动配置

IPv4数据包本身不支持SRv6,但SRv6中可以承载IPv4报文。

srv6报文转发过程

在这里插入图片描述

上图展示了SRv6转发的一个范例。在这个范例中,结点R1要指定路径(需要通过R2-R3、R4-R5的链路转发)转发到R6,其中R1、R2、R4、R6为有SRv6能力的的设备,R3、R5为不支持SRv6的设备。

  1. 步骤一:Ingress结点处理:R1将SRv6路径信息封装在SRH扩展头,指定R2和R4的END.X SID,同时初始化SL = 2,并将SL指示的SID A2::11拷贝到外层IPv6头目的地址。R1根据外层IPv6目的地址查路由表转发到R2。
  2. 步骤二:End Point结点处理:R2收到报文以后,根据外层IPv6地址A2::11查找本地Local SID表,命中END.X SID,执行END.X SID的指令动作:SL—,并将SL指示的SID拷贝到外层IPv6头目的地址,同时根据END.X关联的下一跳转发。
  3. 步骤三:Transit结点处理:R3根据A4::13查IPv6路由表进行转发,不处理SRH扩展头。具备普通的IPv6转发能力即可。
  4. 步骤四:End Point结点处理:R4收到报文以后,根据外层IPv6地址A4::13查找本地Local SID表,命中END.X SID,执行END.X SID的指令动作:SL—,并将SL指示的SID拷贝到外层IPv6头目的地址,由于SL = 0, 弹出SRH扩展头,同时根据END.X关联的下一跳转发。
  5. 步骤五:弹出SRH扩展头以后,报文就变成普通的IPv6头,由于A6::1是1个正常的IPv6地址,遵循普通的IPv6转发到R6。

SRv6技术的特点

  • 纯IP化:基于Native IPv6转发,SRv6通过扩展报文头实现,没有改变IPv6封装结构,SRv6报文依然是IPv6报文,兼容IPv6设备,网络拓扑信息和业务都被编码在数据包的包头中
  • 可扩展性:可编程
  • 简化:协议简化,去除LDP、RSVP-TE、VxLAN等
  • SRv6与存量IPv6网络兼容:业务开通只需在头尾节点进行部署,缩短部署时间,提升部署效率
  • 提升跨域体验:相对于传统的MPLS跨域技术来说,srv6跨域部署更加简单,srv6具有native ipv6的特质,在跨域场景中,只需要将一个域的ipv6路由通过BGP4+引到另外一个域,就可以开展跨域业务不熟,降低了业务部署的复杂性
  • 提供高保护效率的FRR保护能力:在SRv6技术的基础上结合RLFA FRR实现高效的TI-LFA FRR算法(同SR-MPLS)

参考:
https://blog.csdn.net/weixin_43991442/article/details/125324404
https://www.sdnlab.com/23735.html
https://blog.csdn.net/m0_49864110/article/details/123591943

这篇关于SRv6技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827018

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

java线程深度解析(六)——线程池技术

http://blog.csdn.net/Daybreak1209/article/details/51382604 一种最为简单的线程创建和回收的方法: [html]  view plain copy new Thread(new Runnable(){                @Override               public voi

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途