问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SRv6 SFC实现过程详解

创作时间:
作者:
@小白创作中心

SRv6 SFC实现过程详解

引用
1
来源
1.
https://info.support.huawei.com/hedex/api/pages/EDOC1100277650/AZM1016J/04/resources/vrp/dc_vrp_srv6_all_feature_0037.html

SFC定义

业务功能链SFC(Service Function Chain)是一种给应用层提供有序服务的技术。SFC用来将网络设备上的服务在逻辑层面上联接起来,从而形成一个有序的服务组合。SFC通过在原始报文中添加业务链路径信息来实现报文按照指定的路径依次经过服务设备。

数据报文在网络中传递时,往往需要经过各种各样的服务节点,从而保证网络能够按照预先的规划为用户提供安全、快速、稳定的服务。这些服务节点包括熟知的防火墙FW(Firewall)、入侵防御系统IPS(Intrusion Prevention System)、应用加速器和NAT等,网络流量需要按照业务逻辑所要求的既定顺序经过这些服务节点,才能实现所需要的业务。

SFC基本概念

根据是否可以感知SRv6封装,服务节点SF(Service Function)分为SRv6-aware SF和SRv6-unaware SF:

  • SRv6-aware SF能够识别收到的SRv6报文并对其进行处理,这种情况直接将SF的SID编排到业务链路径中即可实现业务链;
  • SRv6-unaware SF不识别SRv6报文,收到后将其丢弃,这种场景需要配置SF代理才能实现业务链。

本节主要聚焦于SRv6-unaware SF场景业务链的实现,后文所提到的所有SF均为SRv6-unaware SF。

SRv6 SFC的典型组网如图1所示。

图1SRv6 SFC典型组网示意图

SFC相关的其他相关概念如表1所示。

表1 SFC基本概念

概念
描述
SFC域
SFC域是指一个包含了SFC设备的区域。
分类器SC(Service Classifier)
SC位于SFC域的边界入口,报文进入SFC域后会首先进行流量分类,分类的粒度由分类器能力和SFC策略决定,分类规则可以粗略也可以详细。
业务链转发节点SFF(Service Function Forwarder)
SFF用于将从网络中收到的报文转发到SFF关联的若干个SF上,转发的依据就是SRv6封装的信息。SF处理后将报文再返回给SFF,SFF最终决定是否将报文发回网络中。由于SF本身不支持处理SRv6报文,所以还需要一个SF代理(SF Proxy)。SF Proxy代表SF处理来自SFF的报文,删除SRv6封装信息,通过本地逻辑组件将报文发给SF,也接收从SF发回的报文,重新为之添加SRv6封装信息。在图1中,SFF充当SF代理角色。
业务链路径SFP(Service Function Path)
根据配置计算出的一条报文路径,可以精确到规定出每一个SF的位置。在SRv6网络中,一个SRv6 TE Policy可以作为一个业务链路径SFP。

SFC基于SRv6 TE Policy的转发原理

SRv6 TE Policy通过Segment List指示网络中的设备遵循指定的路径转发,非常适合业务链场景。如果数据包被重定向到SRv6 TE Policy中,则SRv6 TE Policy的Segment List由头端添加到数据包上,网络的其余设备执行Segment List中嵌入的指令。

如图2所示,SF1和SF2是SRv6-unaware SF。为了实现业务链,需要分别在SFF1和SFF2配置SF Proxy功能,并且为SF1 Proxy和SF2 Proxy分配SRv6 SID。分类器SC上基于SF1 Proxy SID,SF2 Proxy SID和Tail End SID组成一个SRv6 TE Policy的Segment List,SRv6 TE Policy作为业务链路径。

图2SFC基于SRv6 TE Policy的转发原理

详细的数据转发原理描述如下:

  1. 分类器SC从用户网络接收到原始IPv4报文,通过匹配五元组等分类信息进行分类,分类后的流量被重定向到SRv6 TE Policy中。分类器根据SRv6 TE Policy进行SRv6报文封装,SRv6报文目的地址是SF1 Proxy SID。在图2中,SRH信息里除了SRv6 TE Policy路径信息以外,还有代表VPN业务或公网业务的Tail End.DT4 SID。

  2. SFF1收到报文以后,执行SF1 Proxy SID对应指令,解封装报文,然后将原始报文发送到SF1进行处理。

  3. SF1处理完报文以后,将报文发回给SFF1。

  4. SFF1根据报文的入接口(SFF上与SF相连的接收IPv4报文的接口)信息,查找配置信息,然后依据配置重新添加SRH信息,进行SRv6封装,此时SRv6报文目的地址是SF2 Proxy SID。

  5. SFF2收到报文以后,执行SF2 Proxy SID对应指令,解封装报文,然后将原始报文发送到SF2进行处理。

  6. SF2处理完报文以后,将报文发回给SFF2。

  7. SFF2根据报文的入接口(SFF上与SF相连的接收IPv4报文的接口)信息,查找配置信息,然后依据配置重新添加SRH信息,进行SRv6封装,此时SRv6报文目的地址是Tail End SID。报文沿着IGP最短路径转发给Tail End节点。

  8. Tail End节点收到SRv6报文后,发现报文目的地址是自己的End SID,所以执行该End SID相关的指令,解封装报文,SL减1,变为0,同时更新IPv6目的地址字段。当前报文IPv6目的地址字段是Tail End.DT4 SID,Tail End节点使用Tail End.DT4 SID查找My Local SID表,执行Tail End.DT4 SID相关的指令,将原始IPv4报文转发到对应的IPv4 VPN或者公网。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号