简介
本文档介绍IPv6分段路由(SRv6)设计指南和部署最佳实践。它还涵盖无缝迁移策略。
背景信息
SRv6使用IPv6数据平面和网络编程的概念引入了一定程度的简化。 RFC 8986中描述的SRv6架构基于源路由,SRv6将网络中的数据包处理定义为程序。网络编程能够编码数据包报头中的网络路径和网络功能。该程序表示为SRv6扩展报头中包含的数据段列表。每个网段是一个128位的实体,其中第一个位标识网络路径中的路由器(网段的定位器部分),剩下的位标识该路由器要执行的功能。
分段路由架构概述
图1 — 分段路由架构概述
为什么选择SRv6?
IPv6是新的标准,而SRv6是逻辑向SDN和可编程网络发展的新模式。SRv6旨在弥合SDN与传统网络之间的差距。 SRv6提供高级SRv6流量工程(TE)功能,将网络转换为多服务基础设施,并提供灵活算法(Flex-Algo或FA)功能,以便支持同一物理网络基础设施在不同方面的多次优化。
简化
SRv6通过扩展IGP消除了LDP和RSVP-TE等隧道技术的需求,并简化了控制平面。它使用IPv6地址对端到端路径进行编程,而不是在数据平面上使用MPLS标签。SRv6大大简化了网络协议,并降低了控制平面和数据平面级别的操作和维护的复杂性。它允许云、网络和终端基于相同的标准协议实施端到端的可管理和可控解决方案。
此外,由于最短路径段包含到相关节点的所有ECMP路径,因此SR在设计上支持IP的ECMP性质。
本地IPv6属性
SRv6允许节点使用有序的数据段列表引导数据包通过SR域,并指示沿途的节点如何处理数据包。SRv6中的数据段可以是指通过最短路径将数据包发送到节点、通过特定链路或发送到应用的指令。SRv6是基于源的路由,路径信息被编码在它必须经过的数据包中,中间路由器不必维护所有路径的状态。SRv6能够打破运营商网络和数据中心网络之间的边界,极大地增强了SRv6的可扩展性和部署灵活性。
网络编程功能
SRv6的基础设施编程功能改变了网络处理应用的方式。网络不再只是根据应用表示的一些特定约束(例如,SR流量工程)将流量从点A路由到点B。现在,网络可以对沿同一路径传输应用程序的应用程序执行操作。它使您的应用和网络以完全不同的全新方式交互。
流量工程
利用最先进的SRv6流量工程功能,网络可以转变为多服务基础设施。新的灵活算法功能使同一物理网络基础设施可以沿不同维度进行多项优化(例如,一项可针对低延迟进行优化,另一项可针对带宽进行优化,或者一项可通过两个不同的平面提供不相交的路径)
网络切片发挥着重要作用,因为服务提供商和企业准备通过融合基础设施提供各种5G服务,这些服务具有特定和不同的需求。因此,服务提供商在其整个网络中实施最先进的流量工程解决方案,从蜂窝站点直接到核心和数据中心,以确保每项服务都拥有自己的专用网络分片,以及自己的SLA集。
恢复能力
恢复能力在确保网络始终保持正常运行以便随时随地访问其服务方面发挥着关键作用。当前的IGP路由协议通过重新路由网络中的故障流量来提供第一级恢复能力。但这还不够。越来越多的应用需要网络确保少于50毫秒的保护来防范任何类型的网络故障。这正是SRv6 TI-LFA(拓扑无关的无环路备用)与Uloop避免结合100%的拓扑覆盖范围、简便性和路径优化所带来的。
SRv6服务
在基于SRv6的服务中,出口PE向SRv6服务SID发出BGP服务路由信号。入口PE将负载封装在外部IPv6报头中,其中目的地址是由出口PE通告的SRv6服务SID。PE之间的BGP消息携带SRv6服务SID,以便互连PE并形成VPN。SRv6服务SID是指与出口PE路由器通告的某个SRv6服务特定行为相关联的分段标识符,例如:
- uDT4(具有解封和IPv4表查找的终端)
- uDT6(具有解封和IPv6表查找的终端)
- uDX4(具有解封和IPv4交叉连接的终端)
- uDX6(具有解封和IPv6交叉连接的终端)
在撰写本文时,支持以下基于SRv6的服务:
- 第3层BGP服务 — L3VPN
- 第2层BGP服务 — EVPN-VPWS
L3VPN
基于SRv6的L3VPN功能支持在SRv6数据平面上部署L3VPN。基于SRv6的L3VPN将SRv6网段ID(SID)用于服务网段而不是标签。
可以通过以下方式分配BGP SID:
- 提供uDT4或uDT6支持的每VRF模式。uDT4/uDT6表示具有解封和IPv4或IPv6表查找的终端。uDT4和uDT6分别用于IPv4 L3VPN和IPv6 L3VPN。
- 提供uDX4和uDX6交叉连接支持的每CE模式。uDX4表示具有解封和IPv4交叉连接的终端。同样,uDX6表示具有解封和IPv6交叉连接的终端。
EVPN VPWS
EVPN VPWS对点对点服务使用BGP控制平面。采用EVPN的VPWS具有以下优势:
- 无需为点对点以太网服务发送伪线信号
- 多宿主功能,如单主用/主用/主用/端口主用
uDX2 SID终端行为用于EVPN VPWS服务。
SRv6使用案例
服务功能链
服务功能链(SFC)允许创建由一组有序的服务功能组成的复合网络服务。SFC表示通过虚拟网络功能(VNF)序列转发数据包的过程。SRv6提供了一种简单且可扩展的方式,可将服务功能链用于SR感知服务和SR不感知服务功能(SF)。SRv6是一种源路由范式,可用于引导数据包通过VNF有序列表。SR通过为每个SF分配一个SID并将这些SF SID排列在SID列表中来启用SFC。如果SF不知道SRv6,则需要SR代理在SF前面将流量路由到该SF。
SFC是数据中心的重要功能之一。数据中心中的流量通过防火墙、入侵检测系统(IDS)、深度数据包检测(DPI)和网络地址转换(NAT)等功能来处理数据包,从而形成服务链。因此命名服务功能链或服务链。
切片
SRv6有助于创建基于SLA限制的切片,这些切片从用户应用开始,一直传输到中央数据中心。使用SRv6流量工程和灵活算法的分片逻辑分离有助于通过带宽优化为延迟敏感型应用提供特定的服务处理。随着服务提供商和企业准备提供各种5G服务,网络切片发挥着重要作用。
负载平衡
与MPLS相反,SRv6解决方案提供第1天最佳负载均衡,MPLS仍存在负载均衡问题。在MPLS中,等价多路径(ECMP)选择的熵位于内部IP数据包中,因此路由器必须通过MPLS标签堆栈向下挖掘,才能访问用于散列的IP报头。
在SRv6中,入口PE计算客户数据包的哈希值,并将结果写入添加的外部IPv6报头的Flow Label(流标签)字段。网络的其余部分利用此流标签来执行ECMP选择,只需查看外部报头,而无需深入了解封装层。
运营和绩效管理
路径跟踪功能通过将数据包路径记录提供为一系列接口IDS来提供SRv6传输的操作和性能管理。此外,它还会记录沿数据包传输路径的每个出口接口上的端到端延迟、每跳延迟和负载。路径跟踪允许您仅使用一个40字节的IPv6逐跳扩展报头跟踪14跳。
它支持精细的时间戳,并且设计用于在基础管道中执行线速硬件。
有关详细信息,请参阅SRv6技术基础。
设计指南和最佳实践
货位规划
顾名思义,SRv6是通过IPv6数据平面部署的分段路由。因此,要启用通过v6的分段路由,必须首先为IPv6启用服务提供商基础设施。因此,部署SRv6的第一步是为IPv6部署规划地址空间。在规划阶段,可以为SRv6定位器地址选择一个子网。在SRv6中,SID代表一个128位的值,其中定位器是服务SID的第一部分,具有最高有效位,用于路由到负责执行本节所述功能的节点。您也可以将其视为网络地址。
RFC8986将SRv6服务SID定义为由三部分组成:
- LOCATOR:此部分用作分配SID的节点的可达性信息,全局已知且可路由。在F3216 uSID格式中,定位器部分是48位uN。
- FUNCTION:这仅对拥有节点有意义。指定特定的SRv6 End函数。在F3216 uSID中,这是一个16位本地作用域的uSID。
- ARGS:函数的可选参数。
分配给节点的SRv6定位器SID可以独立于该节点的IPv6编址进行分配。对于SRv6网络,可以为重叠最终用户的基础设施地址、管理平面和服务地址规划IPv6地址。基础设施IP寻址和SRv6 SID分配可属于两个不同的块;例如,基础设施IPv6地址(例如设备互连的网络地址)从为基础设施地址或管理平面规划的IPv6地址块中分配,SRv6 SID从为服务平面规划的块中分配。
尽管基础设施地址和SID表示为IPv6地址,但建议从不同的块分配这两个地址。这样,现有的IPv6地址规划不会限制任何当前或未来的SRv6 SID分配计划。
对于SRv6 uSID运营商,通常使用记法“Fbbuu”指定格式,其中“bb”是块的大小,“uu”是ID的大小。例如,“F3216”是具有32位uSID块和16位uSID ID的格式。为了与此保持一致,通用编址策略可以遵循四层定位器结构:SID空间、uSID块、设置ID和节点D,如下所述:
uSID格式
图2 - uSID格式
前两个层由uSID块形成:
- SID空间:IPv6地址块用于分配SID定位器。网络中的所有SID块必须来自相同的24位SID空间。
- 块ID:uSID块的通用前缀。其大小取决于uSID格式,即uSID格式的8位
接下来的两个层由uSID ID形成:
- Set IDs:任何uSID组,它们对ID的前两个半字节共享特定值。16位uSID空间包含256个集。每个集表示256个uSID值。集合唯一地绑定到算法。
- 节点ID:全局节点SID、邻接SID或IP重叠服务SID。
'建议的最佳做法是从以FC00:开头的专用IPv6唯一本地地址(ULA)地址范围中为定位器分配SRv6 SID。子范围/24可用于IPv6 ULA地址空间,如FC00::/8。也支持SID空间的公共范围,因此SID块也可以从全局分配的块中分配。此图显示了可在规划和设计阶段使用的推荐定位器分配逻辑。uSID1下“SSNN”的位分配可以根据提供商的要求进行调整,无需像半字节33-40所示在8位边界结束。
uSID定位器规划示例
图3 - uSID定位器规划示例
- SID空间:uSID的前24位构成基本SID空间。如上所述,建议在部署中为uSID使用专用块。
- 块ID:uSID块上的后8位组成块ID,可分为X和Y,其中X可表示片或块,而Y表示flex-algo ID。
- 集ID:uSID ID的8位表示集ID。可以根据地理区域和密度保留设置ID。
- 节点ID:最不重要的8位代表节点ID。一个定位器总共可以分配255个节点。
对于不同的flex-algorithm,建议使用不同的定位器方案,这些方案可通过所说明的方法导出。
环回地址规划
在SRv6部署中,环回地址可以从定位器前缀范围分配,也可以独立于计划的基础设施IPv6范围分配。但是,如果环回地址是从定位器前缀范围分配的,则可以通过定位器前缀范围通告本身到达,并且不必在域之间单独通告为/128前缀。
例如,如果uSID定位器块是BBBB:BB00:0001/48,则环回地址可以是BBBB:BB00:0001::L /128,其中L=1-F。IGP ISIS会注意通告定位器块,因此无需单独通告环回块。
注意:动态SID不会与现有的SID/前缀冲突,例如定位器块中的环回地址。
来自定位器块的环回编址的优点
从定位器块分配环回编址有几个优点:
- 无额外的IGP前缀有助于提高可扩展性
- 没有额外的FIB条目有助于改善硬件扩展
- 无需额外的地址分配工作
- 无需额外再分发/泄露/总结,从而降低操作复杂性
- 不需要使用ping验证定位器可达性
- 更易于对服务流量应用单独的安全处理(及其ICMP错误消息)
- BGP NH和SID共享命运
当您拥有来自定位器空间的环回IP架构时,它将导致SRv6空间中的服务流量的SA和DA,因为SRv6应用(如ISIS、BGP)会使用它来分配SID。
BGP对等的环回可以从从服务块获取的定位器集中切除。通过在汇聚节点或边界节点重新分发定位器块,从服务块中分割出环回地址,定位器下的环回可以通过定位器前缀到达,不必单独通告为/128前缀。
前缀汇总
SRv6前缀汇总是IP网络的固有优势。SRv6消除了MPLS的所有这些复杂性,其中通告/32前缀是数据平面正常工作的要求。而使用SRv6;如果您有两个城域网络,每个城域网络都有数十万个/64定位器(支持SRv6的路由器),则每个城域都可以将一个汇总路由通告到核心层。因此,核心层只承载核心节点的定位器和城域网的总结路由。就简单性和可扩展性而言,这是一个非常强大的功能。
定位器汇总
图4 — 定位器汇总
SRv6与MPLS/SR-MPLS的快速比较
IP路由聚合
MPLS/SR-MPLS:必须在多个域之间通告与32位主机地址的标签绑定,而无需聚合。缺少路由汇总会对大规模服务提供商产生可扩展性影响。
SRv6:继承本地IP功能并可在网络域间导入聚合路由,这对运营商而言具有极大的简便性和可扩展性。
端到端服务自动启动
SR-MPLS:SRGB和节点SID需要在跨域场景中进行整个网络的规划。
SRv6:借助SRv6,运营商可以直接基于平坦IPv6可达性建立E2E隧道。瞬变节点上的SRv6支持不是强制性的,因此运营商可以灵活地分阶段启用SRv6,而在MPLS的情况下,需要端到端MPLS数据平面支持。
按需升级
SR-MPLS:首先升级整个网络,然后部署SR-MPLS,或在某些中间节点部署映射服务器。
SRv6:网络可以按需迁移到SRv6。如前所述,SRv6未启用或支持的节点可以通过正常IPv6转发进行穿越。
小结:
MPLS/SR-MPLS:IP可达性是基础。必须在整个网络中进行MPLS标签通告。
SRv6:IPv6可达性是基础。SRv6可以分阶段逐步部署。
SRv6 — 高级迁移战略
高级迁移战略
图5 — 高级迁移策略
为了更顺利地迁移,建议采用增量阶段式方法。在高级别,这是增量部署方法:
- 首先,配置基础设施的IPv6地址并启用IGP以通告这些地址。
- 选择要使用SRv6配置的一组PE设备,然后分阶段移动重叠服务。
建议为SRv6设置单独的BGP路由反射器,因为必须配置多个地址系列(IPv6、VPNv4、VPNv6等)。要启用SRv6,必须在网络中启用IPv6。
步骤1:升级到IPv6(IPv6就绪是SRv6的前提条件)
第二步:升级边缘设备以引入基于SRv6 PE的VPN
第三步:升级某些中间节点以支持流量TI-LFA、TE、SFC等
第4步:升级整个网络以支持E2E SRv6
从MPLS/SR-MPLS的服务迁移
为了更顺利地迁移,建议采用增量阶段式方法。在高级别,这是增量部署方法:
- 首先,配置基础设施的IPv6地址并启用IGP以通告这些地址。
- 选择要使用SRv6配置的一组PE设备,然后分阶段移动重叠服务。
建议为SRv6使用单独的BGP路由反射器。 BGP已得到增强,并可通过SRv6网络为扩展服务提供支持,例如:
- IPv4第3层VPN
- IPv6第3层VPN
- IPv4 BGP global
- IPv6 BGP全局
- 第2层VPN — 以太网VPN(EVPN)
根据IETF草案“SRv6 BGP based Overlay services”中定义的消息和过程,BGP将对应的SRv6服务SID编码为BGP网络层可达性信息(NLRI)的前缀 — SID属性,并将其通告给其IPv6 BGP对等体。
L3VPN
基于SRv6的L3VPN功能支持在SRv6数据平面上部署L3VPN。在基于SRv6的服务中,出口PE向SRv6服务SID发出BGP服务路由信号。入口PE将负载封装在外部IPv6报头中,其中目的地址是由出口PE通告的SRv6服务SID。PE之间的BGP消息携带SRv6服务SID,作为互连PE和形成VPN的一种方式。SRv6服务SID是指与出口PE路由器通告的某个SRv6服务特定行为相关联的分段标识符,例如:
- uDT4(具有解封和IPv4表查找的终端)
- uDT6(具有解封和IPv6表查找的终端)
EVPN多宿主
此功能通过SRv6网络提供具有全主动多宿主功能的ELINE(P2P)服务。全主动多宿主使运营商能够将客户边缘(CE)设备连接到两个或多个提供商边缘(PE)设备,以提供负载均衡和冗余连接。借助全主动多宿主,所有PE都可以转发进出多宿主设备的流量。使用以下uSID函数:
- uDX4(具有解封和IPv4交叉连接的终端)
- uDX6(具有解封和IPv6交叉连接的终端)
SRv6互通网关
SRv6/MPLS L3服务互通网关使您能够在控制平面和数据平面上提供服务连续性,从而在MPLS和SRv6域之间扩展第3层服务。
此功能允许SRv6 L3VPN域与现有的MPLS L3VPN域进行互操作。此功能还允许从MPLS L3VPN迁移到SRv6 L3VPN。
SRv6/MPLS L3服务互通网关在网关节点提供传输和服务终止。网关会为配置为重新发起的VRF下的所有前缀生成SRv6 VPN SID和MPLS VPN标签。网关通过弹出MPLS VPN标签、查找目标前缀和推送适当的SRv6封装,支持从MPLS域到SRv6域的流量转发。从SRv6域到MPLS域,网关删除外部IPv6报头,查找目标前缀,并推送VPN和下一跳MPLS标签。
网关节点上的VRF配置有两组路由目标(RT):
- MPLS L3VPN RT
- SRv6 L3VPN RT(称为拼接RT)
网关执行以下操作:
- 导入从一个域接收的服务路由(MPLS或SRv6)
- 将导出的服务路由重新通告到其他域(下一跳自身)
- 在数据平面上拼接服务(uDT4/H.Encaps.Red ↔ service label)
迁移方法和准则
从基于LDP的MPLS网络或基于SR的MPLS网络的迁移非常相似。在第0天,网络中的每个节点都在底层数据平面中运行MPLS(无论是基于LDP还是基于SR),以获取Telco服务提供商提供的所有服务。这是用于解释分阶段迁移方法的实验拓扑示例。
第0天网络状态
图6 - 0天网络状态
要启用IPv6分段路由,请使用 hw-module profile segment-routing srv6 mode micro-segment format f3216
命令输入 XR配置模式。此命令仅适用于基于Cisco IOS XR的设备。
为了准备网络以进行SRv6迁移,运营商必须首先规划网络中的IPv6实施。如前所述,如果没有IPv6,则无法启用SRv6。因此,对于基础设施规划的IPv6地址,必须在网络中的任何位置启用IPv6。在迁移的第一阶段,节点上的所有逻辑和物理接口都获取IPv6地址。这是现有的IPv4地址(双协议栈方法)的补充。这样,所有服务将继续通过现有的数据平面运行。
在SP基础设施中的接口和环回上配置IPv6地址后,必须启用IGP才能在域中通告IPv6前缀。
第1天网络状态
图7 — 第1天网络状态
以下是为ISIS采取的步骤:
IGP在网络中为网络中的设备配置,以便相互通信。您必须为IPv6地址系列配置IS-IS。
router isis 100
address-family ipv6 unicast
!
!
!
interface Loopback0
address-family ipv6 unicast
! !
interface GigabitEthernet0/0/0/1
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/2
address-family ipv6 unicast
!
!
!
Commit
ISIS IPv6地址系列支持可以分阶段进行。一旦设备通过IPv6可达后,您必须继续执行BGP。
在第2天,作为SRv6实施的下一步,建议使用单独的一组BGP路由反射器,并且这些路由反射器用于多个地址系列(IPv6、VPNv4、VPNv6等)。这样,不会干扰现有的路由反射器。请注意,所有电信服务均在此阶段存在的MPLS数据平面上运行。
第2天网络状态
图8 — 第2天网络状态
此配置片段突出显示BGP配置。
为IPv6地址系列配置BGP。
!
!
route-policy LOCAL-PREF
set local-preference 50
end-policy
!
commit
!
!
router bgp 100
!
neighbor 2001:db8:2:2:2::2
remote-as 100
update-source Loopback0
address-family vpnv4 unicast
route-policy LOCAL-PREF in
!
commit
BGP中的本地优先级为50,目前添加成功。您希望首选通过MPLS RR的路由,以使服务运行良好。
现在,对于SRv6迁移,您可以采取非常安全的增量方法,从两个PE开始。
然后,必须考虑分段路由下的SRv6定位器,并且必须通过IGP和BGP为服务通告该定位器。
第3天网络状态
图9 — 第3天网络状态
本节介绍如何配置SRv6。
router isis 100
address-family ipv6 unicast
segment-routing srv6
locator LOC0
!
router bgp 100
!
segment-routing srv6
locator LOC0
!
vrf XYZ
address-family ipv4 unicast
segment-routing srv6
alloc mode per-vrf
!
!
!
segment-routing
srv6
locators
locator LOC0
prefix 2001:db8:a::/48
commit
您可以更改来自SRv6 RR的路由的本地优先级,并使其成为首选VPN路由。通过这种方式,L3VPN VRF流量仅在这两个PE之间通过SRv6传输。
慢慢地,其他PE和服务也可以使用类似的方法迁移。一旦所有PE迁移到SRv6,即可从网络中删除IPv4 MPLS RR和相关配置。
相关信息