SRv6 SFC技术白皮书
Copyright © 2023 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
为了满足用户业务安全、稳定等需求,数据报文在网络中传递时,往往需要按照业务逻辑依次经过各种服务节点,例如防火墙(Firewall)、入侵防御系统(Intrusion Prevention System)、应用加速器和地址转换(Network Address Translation)等。SRv6 SFC(Service Function Chain,服务链)是一种通过在原始报文中添加SRv6路径信息来引导报文按照指定的路径依次经过应用层服务设备的技术。SRv6 SFC技术可以很方便地满足上述需求。
SRv6 SFC技术具有如下优势:
· 网络灵活编排
SRv6 SFC基于SDN架构设计,跨越了应用和网络之间的鸿沟,能够更好地实现应用驱动网络。部署不同业务或调整业务时,只需要更改服务链的顺序而无需更改网元配置,就可以实现网络业务的灵活开通和快速部署。
· 网络可编程,易于实现新业务需求
SRv6 SFC利用多种类型的SRv6 SID,指示不同的转发动作。通过不同的SID操作,可以实现各种业务场景的需求。
日后,用户还可以根据实际需要,定义新的SID类型,具有很好的扩展性。
图1 SRv6 SFC典型组网示意图
如图1所示,业务数据从用户网络进入SRv6 SFC服务链网络后依次经过应用服务节点SF 1和SF 2处理,最后在尾节点上业务数据转发回用户网络。SRv6 SFC服务链网络包括以下角色:
· SC(Service Classifier,业务分类节点):位于SRv6 SFC服务链网络边缘,是服务链路径的源节点。SC可以采用不同的引流方式,将业务数据引入SRv6 TE Policy隧道中进行转发。
· SF(Service Function,应用服务节点):为业务流量提供特定应用服务的节点。不能识别SRv6报文的应用服务节点称为SRv6-unaware SF,能够识别SRv6报文的应用服务节点称为SRv6-aware SF。
· SFF(Service Function Forwarder,服务链转发节点):SFF作为SF的服务链代理,根据SRv6封装信息,将收到的报文转发到SFF关联的若干SF上。SF处理报文后再返回给SFF,SFF最终决定是否继续转发报文。
SRv6 SFC支持如下两种代理模式:
· 服务链静态代理(Static SR Proxy SFC)
· 服务链伪代理(Masquerading SR Proxy SFC)
服务链静态代理适用于SF不能识别SRv6报文的场景。由于SF不能识别SRv6报文,SFF需要将SRv6报文解封装后,把用户网络的原始数据报文转发给SF处理。SF处理完原始报文后,将其转发回SFF节点,由SFF决定是否继续在SRv6 SFC网络中转发报文。如果继续在SRv6 SFC网络中转发,则SFF节点需要根据手工配置的SID列表为处理后的业务报文重新封装SRv6头部。服务链静态代理支持双归保护和Bypass保护功能。
为了实现服务链静态代理报文转发,在SFF上引入一种新的SRv6 SID类型——End.AS SID。End.AS SID用于标识SRv6 SFC服务链网络中的某个应用服务节点。End.AS SID对应的转发动作是:
· 报文从转发节点SFF发送到应用服务节点SF之前,SFF先解封装报文,然后根据End.AS SID关联的出接口转发报文。
· 报文从应用服务节点SF到转发节点SFF之后,SFF根据报文的入接口或者入接口和VLAN关联的End.AS SID及其配置,重新封装报文。
图2 SRv6 SFC服务链静态代理报文转发示意图
如图2所示,以L3VPNv4 over SRv6 TE Policy组网为例,SRv6 SFC服务链静态代理的报文转发过程如下:
(1) 源节点SC收到用户网络原始IPv4报文后,可以将流量引入SRv6 TE Policy中。SC根据SRv6 TE Policy进行SRv6报文封装,此时IPv6报文的目的地址是SFF的End.AS SID,SRH头部包括SRv6 TE Policy的路径信息和尾节点的End.DT4 SID。
(2) SFF收到报文以后,通过查找Local SID表发现目的地址为本地End.AS SID,记录当前SL值,并执行End.AS SID对应指令,即解封装报文,去除IPv6报文头部后将原始报文通过配置的出接口发送到SF进行处理。
(3) SF处理完报文以后,将报文发回给SFF。
(4) SFF根据报文的入接口(SFF上与SF相连的接收IPv4报文的接口)或入接口和VLAN,查找配置信息,然后依据配置的SID list重新封装SRv6报文,封装后报文SRH中SID list与源节点SC上SRv6 TE Policy路径一致,SRH中的SL值为记录的SL值减1。此时SRv6报文目的地址是本地End.AS SID的下一个SID(即Device C的End SID)。SFF根据报文的目的IPv6地址,查找IPv6路由表转发报文。
(5) Device C接收到报文以后,通过查找Local SID表发现目的地址为本地End SID,按SRv6转发流程处理报文。目的地址替换为D1(即尾节点的End SID),SL-1,查找IPv6路由表转发报文。
(6) 尾节点接收到报文以后,通过查找Local SID表发现目的地址D1为本地SID,将目的地址替换为D2(即尾节点的End.DT4 SID),SL-1变为0。尾节点执行End.DT4 SID对应指令,即解封装SRv6报文,并将原始报文转发到对应VPN或公网。
图3 SF不可达导致报文转发异常
如图3所示,在没有任何保护的情况下,SF不可达时,需要经过应用服务节点SF处理的报文到达SFF设备后会被丢弃,报文既无法按正常逻辑顺序转发,也无法经过应用服务节点的处理。为了提升SRv6 SFC服务链静态代理的可靠性,SFF支持双归保护和Bypass保护:
· 双归保护是指一个应用服务节点SF双归连接主备两个SFF。当主用SFF不可达时,业务切换到备份SFF上处理。
· Bypass保护是指应用服务节点SF故障时,报文绕行该服务节点,不再经过该服务节点处理。
SRv6 SFC服务链伪代理不提供可靠性保护机制。
图4 SF双归保护场景下SRv6 SFC报文转发示意图
如图4所示,SF双归接入SFF 1和SFF 2,无Bypass保护。
为了实现双归保护,服务链转发节点SFF 1和SFF 2上需要执行如下操作:
· 指定对方的End SID互为备份Peer SID。
· 引用相同的Locator段用来分配主、备End.AS SID。
· 配置相同的主End.AS SID和备End.AS SID。
当SFF 1检测到从SFF 1到SF不可达时,SFF 1解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH头部的SID list中包含备End.AS SID X2和SFF 2的End SID C。IPv6头部的目的地址为C,SFF 1查路由表将封装后的报文转发至双归备份节点SFF 2。报文到达SFF 2后,如果SFF 2到SF可达,则按照正常SRv6服务链静态代理的转发流程处理报文;如果SFF 2到SF不可达,则丢弃报文。
图5 Bypass保护场景下SRv6 SFC报文转发示意图
如图5所示,在SFC网络中存在SF 1的Bypass保护服务节点SF 2,SF 1单归连接到SFF 1,Bypass保护服务节点SF 2单归连接到SFF 2。
为了实现Bypass应用服务保护,服务链转发节点SFF 1上需要开启Bypass功能并指定Bypass End.AS SID。
当SFF 1检测到从SFF 1到SF不可达时,SFF 1解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH中仅包含Bypass End.AS SID值C,IPv6的目的地址为C,SFF 1查路由表将封装后的报文转发至SFF 2。SFF 2接收到报文后按正常SRv6 SFC服务链静态代理的转发流程处理报文。
如果仅开启Bypass功能而不指定Bypass保护服务节点SF 2的End.AS SID,SFF 1跳过当前SF 1的End.AS SID B,使用D作为下一跳目的地址,继续按SRH头转发至尾节点。
图6 双归保护和Bypass保护混合场景下SRv6 SFC报文转发示意图
如图6所示,在SRv6 SFC网络中存在SF 1的Bypass保护服务节点SF 2,SF 1双归连接到SFF 1和SFF 2,Bypass保护服务节点SF 2单归连接到SFF 3。双归保护和Bypass保护同时存在的情况下优先执行双归保护流程,双归保护失效再切换到Bypass保护流程。
为了实现双归和Bypass保护,服务链转发节点上需要执行如下操作:
· SFF 1和SFF 2上指定对方的End SID互为备份Peer SID。
· SFF 1和SFF 2上引用相同的Locator段用来分配主、备End.AS SID。
· SFF 1和SFF 2上配置相同的主End.AS SID和备End.AS SID。
· SFF 3开启Bypass功能并指定Bypass End.AS SID。
具体的报文转发流程如下:
(1) 在SFF 1上,报文转发处理有两种情况:
¡ 当SFF 1到SF 1转发正常时,按照正常SRv6 SFC服务链静态代理的转发流程处理报文。
¡ 当SFF 1检测到从SFF 1到SF 1不可达时,SFF 1解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH头部的SID list中包含备End.AS SID X2和SFF 2的End SID C。IPv6头部的目的地址为C,SFF 1查路由表将封装后的报文转发至双归备份节点SFF 2。
(2) 报文到达SFF 2后,报文转发处理也有两种情况:
¡ 当SFF 2到SF 1可达,则按照正常SRv6 SFC服务链静态代理的转发流程处理报文。
¡ 当SFF 2检测到SFF 2到SF 1不可达,则切换Bypass保护转发流程。SFF 2解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH中仅包含Bypass End.AS SID值D,IPv6的目的地址为D,SFF 2查路由表将封装后的报文转发至SFF 3。
(3) 报文到达SFF 3后,报文转发处理也有两种情况:
¡ 当SFF 3到Bypass SF 2可达,则按照正常SRv6 SFC服务链静态代理的转发流程处理报文。
¡ 当SFF 3检测到SFF 3到Bypass SF 2不可达,则丢弃报文。
服务链伪代理适用于SF能够识别SRv6报文的场景。由于SF能够识别SRv6报文,SFF将SRv6报文直接转发给SF处理。SF完成应用服务处理后,不处理SRv6的SRH头部信息,直接将报文转发回SFF节点,SFF按照正常SRv6转发流程处理报文。服务链伪代理目前支持的内层报文类型为IPv4、IPv6和以太网报文。服务链伪代理不支持双归保护和Bypass保护功能。
为了实现服务链伪代理报文转发,在SFF上引入一种SRv6 SID类型——End.AM SID。End.AM SID用于标识SRv6 SFC服务链网络中的某个应用服务节点。End.AM SID对应的转发动作是:
· 报文从转发节点SFF发送到应用服务节点SF之前,SFF先将SRv6报文的目的地址修改为SRH中第一个SID值即SRH[0],然后根据End.AM SID关联的出接口转发。
· 报文从应用服务节点SF到转发节点SFF之后,SFF恢复SRv6报文目的地址为SRH[SL],按照正常SRv6报文转发流程进行报文转发。
图7 SRv6 SFC服务链伪代理报文转发示意图
如图7所示,以IPv4 L3VPN over SRv6 TE组网为例,SRv6 SFC服务链伪代理报文转发过程如下:
(1) 源节点SC收到用户网络原始报文后,将流量引入SRv6 TE Policy中。SC根据SRv6 TE Policy进行SRv6报文封装,此时SRv6报文的目的地址是SFF的End.AM SID,SRH头部包括SRv6 TE Policy的路径信息和尾节点的End.DT4 SID。
(2) SFF收到报文以后,通过查找Local SID表发现目的地址为End.AM SID,将SRv6报文的目的地址替换为SRH SID列表中的最后一个SID,即尾节点的End.DT4 SID,同时将SL减1,并将报文从End.AM SID绑定的出接口发送到SF进行处理。
(3) SF处理完报文以后,不修改SRv6报文信息,把报文发回给SFF。
(4) 如果报文的入接口(SFF上与SF相连的接收报文的接口)或入接口和VLAN绑定了End.AM SID,则SFF根据SRH中的SL值替换SRv6报文的目的地址。此时,SL值为2,因此,将SRv6报文目的地址替换为C(本地End.AM SID的下一个SID,即Device C的End SID),SFF根据报文的目的IPv6地址,查找IPv6路由表转发报文。
(5) Device C接收到报文后,通过查找Local SID表发现目的地址为本地End SID,按SRv6转发流程处理报文。目的地址替换为D1(即尾节点的End SID),SL-1,查找IPv6路由表转发报文。
(6) 尾节点接收到报文以后,通过查找Local SID表发现目的地址D1为本地End SID,将目的地址替换为D2(即尾节点的End.DT4 SID),SL-1变为0。尾节点执行End.DT4 SID对应指令,即解封装SRv6报文,并将原始报文转发到对应VPN或公网。
如图8所示,城域网中企业用户和家庭用户业务上行到OLT,并汇聚到城域网汇聚设备。控制器根据业务需求灵活编排转发路径,并将转发路径下发给作为SC的汇聚设备。SC对不同业务进行分类并按业务需求转发业务流量。城域网中的SFC设备根据业务携带的End.AS/End.AM SID按顺序将业务流量转发到对应的应用服务节点。例如,企业专线业务流量需要通过SFC转发到FW和vBRAS处理后,再转发给骨干网CR设备;普通家庭用户流量需要经过SFC转发到vBRAS和CGN处理后,再转发给骨干网CR设备。
图8 城域网中部署SRv6 SFC的典型组网图
· Service Programming with Segment Routing draft-ietf-spring-sr-service-programming-05