SRv6网络编程阅读笔记

SRv6基本原理

概述

在这里插入图片描述

网络指令:SRv6 Segment(SID)
LocatorFunctionArguments
Locator是网络拓扑中分配给一个网络节点的标识,用于路由和转发报文到该节点。Locator标识位置信息,它有两个重要的属性:可路由和可聚合。Function用来表达该指令要执行的转发动作,相当于计算机指令的操作码。Arguments(Args)是一个可选字段。它是指令在执行时对应的参数,这些参数可能包含流、服务或任何其他相关的信息。

目前的Segment Routing技术就是通过在源节点封装一个有序的Segment列表,指示网络在指定节点上执行对应的指令来实现网络的可编程。

网络节点
  • SRv6源节点(SRv6 Source Node):生成SRv6报文的源节点。
  • 中转节点(Transit Node):转发SRv6报文但不进行SRv6处理的IPv6节点。
  • SRv6段端点节点(SRv6 Segment Endpoint Node):接收并处理SRv6报文的任何节点,其中该报文的IPv6目标地址必须是本地配置的SID或者本地接口地址,后文简称为Endpoint节点。

SRv6扩展报文头

在这里插入图片描述

字段长度含义
Next Header8 bit标识紧跟在SRH之后的报文头的类型。
Hdr Ext Len8 bitSRH报文头的长度。不包括前8 Byte的SRH的长度
Routing Type8 bit标识路由扩展报文头(Routing Header)类型,SRH的类型为4
Last Entry8 bit段列表最后一个元素的索引
Flags8 bit预留的标志位,用于特殊的处理,比如OAM
Tag16 bit标识同组报文
Segment List[n]128*n bit段列表中的第n个Segment,Segment是IPv6地址形式
Optional TLV长度可变可选TLV(Type Length Value,类型长度值)部分,例如Padding TLV和HMAC
扩展报文头TLV

Segment List携带的SID都是特定节点要执行的指令信息,也即每个SID只有在发布该SID的节点才会被执行,其他节点只做基本的查表转发动作。相对
来说,TL V携带的信息可以被Segment List中包含的每一个SID对应的发布节点处理,而不仅仅受限于某一个节点。

SRv6指令集

EndPoint 节点行为
  • End:End表示一个指令的终结,开始执行下一个指令。对应的转发动作是SL减1,并将SL指向的SID复制到IPv6报文头的目的地址字段。
  • X:指定一个或一组三层接口转发报文。对应的转发行为是按照指定出接口转发报文。
  • T:查询路由转发表并转发报文。
  • D:解封装。移除IPv6报文头和它相关的扩展报文头。
  • V:根据VLAN查表转发。
  • U:根据单播MAC查表转发。
  • M:查询二层转发表,进行组播转发。
  • B6:绑定到SRv6 Policy。
中转节点行为
中转行为功能简述
T不处理SRH,正常查找IPv6路由表转发
T.Insert为接收到的IP报文插入SRH扩展报文头,并查表转发
T.Insert.Red插入时使用Reduced SRH
T.Encaps为接收到的IP报文封装外层IPv6报文头与SRH,并查表转发
T.Encaps.Red封装中使用Reduced SRH
T.Encaps.L2为接收到的二层报文封装外层IPv6报文头和SRH,并查表转发
T.Encaps.L2.Red封装中使用Reduced SRH

SRv6报文转发

本地SID表

SRv6节点维护一个本地SID(Local SID)表,该表包含所有在本节点生成的SRv6 SID信息。本地SID表有以下用途。

  • 存储本地生成的SID,例如End.X SID。
  • 指定绑定到这些SID的指令。
  • 存储和这些指令相关的转发信息,例如VPN实例、出接口和下一跳等。
报文转发流程

在这里插入图片描述

  • SRv6源节点的处理:将SRv6路径信息封装在SRH扩展报文头中,指定链路B->C和D->E的End.X.SID
  • EndPoint节点的处理执行End.X SID的指令动作:SL减1,并将SL指示的SID更新到外层IPv6报文头的目的地址字段,同时将报文从End.X SID绑定的链路发送出去。
  • 中转节点的处理:按照正常的IPv6报文处理流程,按照最长匹配原则查找IPv6路由表,将报文转发

SRv6 TE

Segment Routing 的出现弥补了 RSVP-TE 的不足。Segment Routing 利用源路由机制,通过在报文头中携带一个有序的指令列表(Segment List),指导报文在网络中的转发。这些指令不是面向数据流的,而是面向节点和链路的,因此网络设备只需维护有限的节点和链路状态即可。Segment Routing 的路径信息被显式的携带在报文中,中间节点只需按照报文中的路径信息进行转发,无须维护逐流的路径状态。

SRv6 Policy

通过在SRH 中封装一系列的SRv6 Segment ID,可以显式指导报文按照规划的路径转发,实现对转发路径端到端的细粒度控制,满足业务的高可靠、大带宽、低时延等SLA 需求。

SRv6 Policy模型

Key值:SRv6 Policy使用如下三元组作为Key,全局唯一标识一个SRv6 Policy。

SRv6 Policy算路

上文介绍到SRv6 Policy的Candidate Path可以通过多种方式生成,主要包括静态指定路径、头节点算路和控制器算路3类。不同方式生成的Candidate Path可以通过Protocol-Origin和originator字段来区分。以下展开介绍。
静态指定路径:
头结点算路:头节点算路和RSVP-TE类似。首先头节点利用IGP携带的TE信息和IGP链路状态信息组成TEDB,然后基于CSPF算法按照带宽、时延、SRLG和不相交路径等约束计算满足条件的路径,并安装相应的SRv6 Policy指导转发。
控制器算路:控制器通过BGP-LS等收集网络拓扑、TE信息以及SRv6信息,并根据业务需求集中进行路径计算,然后通过BGP/PCEP等协议将SRv6 Policy下发到头节点。控制器算路能够支持全局调优、资源预留和端到端跨域。

SRv6 Policy 引流

SRv6 Policy 部署在头节点之后,还需要完成引流工作,将流量引导到 SRv6 Policy中。目前基本有 Binding SID 和 Color 匹配这两大类引流方式。
第一种是通过节点的 binging SID划分发送路径,第二种是通过<Color, Endpoint> 匹配SRv6 Policy。
DSCP引流通过 IP 报文头中封装的 DSCP 值来引流,这种方式可以对命中同一个路由但不同来源的业务进一步细分。

SRv6 Policy 数据转发

在这里插入图片描述

IPv4 L3VPN

  1. 控制器向PE1下发SRv6 Policy(color、endpoint、candidate path)
  2. PE2向PE1发布BGP路由
  3. PE1接收到BGP路由以后,利用路由color和下一跳迭代到SRv6 Policy
  4. PE1接收到普通单播报文,查找VPN实例路由表,开路由接口是SRv6隧道接口。PE1为报文插入SRH信息,封装Segment List和IPv6报文头,转发
  5. 中间节点逐条转发
  6. 到达PE2以后,PE2使用报文的IPv6目的地址查找本地SID,SL减一,更新IPv6DA
  7. 使用VPN SID查找本地SID表,命中了End.DT4 SID,执行命令。(D是解封装,T是查询路由表并转发,4是IPv4路由表)

SRv6 VPN

VPN是依靠 ISP Internet Service Provider ,因特网服务提供者)在公共网络中建立的虚拟专用通信网络,也就是我们常说的私网。 VPN 具有专用和虚拟的特征,可以在底层承载网络上创建出逻辑隔离的网络。

基本模型

在这里插入图片描述

  • CE(Customer Edge,用户网络边缘设备):CE 是用户网络的边缘设备,与服务提供商(Service Provider,SP)相连。CE 可以是路由器或交换机,也可以是一台主机。CE 感知不到VPN 的存在,也不需要支持VPN 的承载协议,比如MPLS 或SRv6。
  • PE(Provider Edge,运营商边缘设备):PE 是服务提供商网络的边缘设备,与用户的CE 直接相连。在VPN 中,对VPN 的所有处理都发生在PE 上。
  • P(Provider):P 是服务提供商网络中的骨干设备,不与CE 直接相连。P 设备不感知VPN,只需要具备基本网络转发能力即可,比如MPLS 转发或IPv6 转发能力。

业务类型

承载三层业务的VPN 为L3VPN。由于VPN 是一种虚拟私有网络,不同的VPN 独立管理自己使用的地址空间,所以不同VPN 的地址空间可能会发生重合。比如,在L3VPN 中,VPN1 和VPN2 都使用了地址空间10.110.10.0/24。为实现这两个VPN 的正常通信,需要将这两个VPN 的流量隔离。整体上,一个 VPN 实例包括:标签转发表、 IP 路由表、与 VPN 实例绑定的接口、以及 VPN 实例的管理信息,包括RD Route Distinguisher ,路由标识)、 RT Route Target ,路由目标)、成员接口列表等。

SRv6 L3VPN

BE
TE

APN6

APN6的产生

2013年,在美国计算机协会数据通信专业组会议上,谷歌发表了“ B4: Experience with a Globally Deployed Software Defined WAN ”一文,首次将其数据中心的广域网连接的设计和部署经验公之于众,宣称其广域网连接能达到接近 100% 的利用率。

B4的基本思路是保证高优先级流量以低延迟到达,低优先级大数量流量根据高优先级业务自适应调整其传输速率,在时域上分摊开,从而把空闲管道填满,有效提高链路利用率。

B4网络解决的是一个基于不同应用的网络流量工程的问题。因为掌握了应用的流量,通过有效的调度可以极大地提升网络利用率。借鉴谷歌根据应用需求和流量特征调整网络资源的思路,我们需要打破传统的 IP 承载网络与应用之间的割裂限制,使网络有效感知应用需求,从而对所承载的业务实现精细化的运营,在保证 SLA (服务水平协议)的同时,提高网络资源利用率。

APN6的解决思路

  1. 开放的应用信息携带:APN6 通过IPv6 携带应用特征信息,包括应用标识符及其对网络性能的要求。这些应用信息还可以根据需求进一步扩展。携带应用信息的行为不是强制性的,应用可以选择是否携带应用信息。
  2. 丰富的网络服务:为了实现精细化运营,不仅需要有细粒度的应用特征信息,而且需要网络侧提供丰富的服务,否则即使携带了应用特性信息也失去了意义。除了传统的TE 流量工程和QoS 服务,前面我们还介绍了IP 网络为支持5G 和云业务提供的网络切片、确定性时延、SFC、BIERv6/组播等新的服务,这些都可以与应用信息匹配,提供更细粒度的服务。而为了支持这些丰富的网络服务,也需要
    基于IPv6/SRv6 扩展来支持。
  3. 准确的网络测量:测量网络性能并更新网络服务来匹配应用,以更好地满足细粒度的SLA 要求。
    APN6 可以较为有效地解决传统网络感知应用方案中所遇到的挑战和问题。APN6 通过IPv6 扩展头将业务报文的应用特征信息(包括应用标识信息及其对网络的性能需求)携带进入网络,使得网络更加快速有效地感知到应用及其需求,从而为其提供精细化的网络资源调度和SLA 保证,更好地为应用提供服务。

APN6框架

APN6需求

IPv6基础介绍

  1. 地址空间方面,IPv4地址采用32bit标识,IPv6采用128bit标识
  2. 报文处理方面,IPv6增加了流标签域,提出扩展报文头的概念。
  3. 地址配置方面,IPv6 协议内置支持通过地址自动配置方式使主机自动发现网络并获取 IPv6 地址,大大提高了内部网络的可管理性。
  4. 路由聚合方面,层次化的网络结构使路由聚合更为容易,提高了路由转发效率。
  5. 端到端安全方面,。IPv6 中,网络层支持 IPsec 的认证和加密,支持端到端的安全。
  6. Qos服务质量保障方面,IPv6 新增了流标记字段,可以用于提供 QoS 保证。
  7. 移动性支持方面,解决了移动 IPv4 的三角路由、源地址过滤问题,使得移动通信处理效率更高且对应用层透明。

IPv6地址

表示方式

IPv6 地址总长度为 128 bit,通常分为 8 组,每组为 4 个 16 进制数的形式,每组 16 进制数间用冒号分隔,这是 IPv6 地址的首选格式。
FC00:0000:130F:0000:0000:09C0:876A:130B

地址结构
  • 网络前缀 : nbit,相当于网络ID
  • 接口标识:(128 - n) bit,相当于主机ID
    接口标识可通过3 种方法生成:手工配置、系统通过软件自动生成、遵循IEEE EUI-64规范自动生成。其中,遵循EUI-64 规范自动生成最为常用。IEEE EUI-64 规范是将接口的MAC 地址转换为IPv6 接口标识的过程。
地址分类
IPv6地址段地址类型
2000::/3全球单播地址
FC00::/7唯一本地地址
FE80::/10链路本地地址
FF00::/8组播地址

IPv6报文头

基本报文头

IPv6 报文由IPv6 基本报文头、IPv6 扩展报文头以及上层协议数据单元3 部分组成。上层协议数据单元一般由上层协议报文头和它的有效载荷构成,有效载荷可以是一个ICMPv6 报文、一个TCP 报文或一个UDP 报文。

字段长度解释
Version4bit版本号。对于IPv6,该值为6
Traffic Class8bit流类别。等同于IPv4 中的ToS 字段,表示IPv6 数据报文的类或优先级,主要应用于QoS
Flow Label20bit流标签。IPv6 中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效的区分数据流
Payload Length16bit有效载荷长度。有效载荷是指紧跟IPv6 基本报文头的数据报文中的其他部分(即扩展报文头和上层协议数据单元)。该字段只能表示最大长度为65535 Byte 的有效载荷。
Next Header8bit下一个报文头。该字段定义紧跟在IPv6 报文头后面的第一个扩展报文头(如果存在)的类型,或者上层协议数据单元中的协议类型
Hop Limit8bit跳数限制。该字段类似于IPv4 中的TTL 字段,它定义了IP 数据报所能经过的最大跳数。
Source Address128bit源地址,表示发送方的地址
Destination Address128bit目的地址,表示接收方的地址
扩展报文头
  1. IPv6 基本报文头(IPv6 Header)
  2. 逐跳选项扩展报文头(Hop-by-Hop Options Header)
  3. 目的选项扩展报文头(Destination Options Header)
  4. 路由扩展报文头(Routing Header)
  5. 分片扩展报文头(Fragment Header)
  6. 认证扩展报文头(Authentication Header)
  7. 封装安全有效载荷扩展报文头(Encapsulating Security Payload Header)
  8. 目的选项扩展报文头(Destination Options Header)(指那些将被IPv6 报文的最终目的地处理的选项)
  9. 上层协议报文(Upper-Layer Header)

ICMPv6

在IPv4 中,ICMP 向源节点报告关于向目的地传输IP 报文过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、报文超长、超时、回应请求和回应应答等。在IPv6 中,ICMPv6 除了提供ICMPv4 常用的功能之外,还是其他一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU(Path Maximum Transmission Unit,路径最大传输单元)发现等。

PMTU

在IPv6 中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6 报文进行分片,报文的分片将在源节点进行。当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的MTU 值大,则会将其丢弃;同时将转发接口的MTU 值通过ICMPv6 报文的“Packet Too Big”消息发给源端主机,源端主机以该值重新发送IPv6 报文,这样带来了额外流量开销。PMTU 发现协议可以动态发现整条传输路径上各链路的MTU 值,减少由于重传带来的额外流量开销。

ND

NDP(Neighbor Discovery Protocol ,邻居发现协议)是 IPv6 协议体系中一个重要的基础协议。邻居发现协议替代了 IPv4 的 ARP Address Resolution Protocol ,地址解析协议)和 ICMP 路由器发现( Router Discovery ),它定义了使用 ICMPv6 报文实现地址解析、邻居不可达检测、重复地址检测、路由器发现、重定向等功能。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值