SRv6在SFC中的应用

简介: 【2月更文挑战第28天】SFC(Service Function Chaining)是指一系列业务功能(如DPI、FW、IPS、WAF)按序处理特定业务流的网络架构。它包括SF(服务功能节点)、SFF(转发器)、SFP(转发路径)和Classifier(流分类器)等组件。SRv6作为支持SFC的技术,有两种方案:无状态Stateless SRv6 SFC,通过SID组合实现路径编程,不需要维护转发状态;有状态Stateful SRv6 SFC,结合SRv6和NSH,适用于SF不支持SRv6的情况。

SFC通常指一组SF(Service Function,业务功能)节点组成的序列。为满足特定的商业、安全等需求,对于指定的业务流,通常要求在转发时经过指定SF序列的处理,这些SF包括DPI(Deep Packet Inspection,深度包检测)、FW、IPS(Intrusion Prevention System,入侵防御系统)和WAF(Web Application Firewall,网络应用防火墙)等多种VAS节点。

SFC的架构主要包括以下关键部分。

  • SF:提供特定网络服务的节点,这些网络服务一般处在OSI(Open System Interconnection,开放系统互连)模型的四层~七层,例如DPI、FW、IPS等。这些服务通常又是网络增值服务,所以也可以将SF等同于VAS。
  • SFF(Service Function Forwarder,业务功能转发器):支持SFC的转发器,一般挂接SF节点,用于将报文转发到SF节点。
  • SFP(Service Function Path,业务功能路径):SFC对应的转发路径。
  • Classifier(流分类器):用于将数据流分类,并转发到对应的SFP。流分类器是SFC的起点,一般支持基于五元组的流量分类规则。
  • SFC Proxy:为不支持SFC的SF节点提供代理接入SFC的能力。


SR-MPLS和SRv6都支持SFC。相比于SR-MPLS,SRv6还可以通过SRH TLV携带SFC的元数据,可以更好地支持SFC,所以本节将重点介绍基于SRv6的SFC。目前业界主要有两种SRv6 SFC解决方案。

  • Stateless(无状态的)SRv6 SFC:指不在SFF上维护每个SFC的转发状态的解决方案。
  • Stateful(有状态的)SRv6 SFC:需要在SFF上维护每个SFC的转发状态的解决方案,其实是一种SRv6与NSH结合的方案。


  1. Stateless SRv6 SFC

在SRv6网络中,可以通过SID的组合来实现转发路径的编程,即显式路径编程。若编程的路径依次穿过指定的SF,则实现了SFC,这就是Stateless SRv6 SFC的主要思想。

在Stateless SRv6 SFC方案中,通过Segment List指定了SFC的转发路径,SRH TLV也可以携带SF相关的元数据,因此不需要NSH来指导报文的转发,也不需要在SFF上维护每个SFC的转发状态。

Stateless SRv6 SFC方案里包含如下关键组件。

  • SRv6-aware SF:支持SRv6的SF节点,可以直接连到SFF。SF需要发布对应的SID,这个SID与服务功能对应,所以被称为Service SID。
  • SRv6-unaware SF:不支持SRv6的SF节点,需要先在SFF和SRv6unaware SF之间部属SRv6 Proxy来完成SRv6报文的处理。
  • SRv6 Proxy:SRv6的代理,SRv6 Proxy完成报文从SRv6网络转发到SRv6-unaware SF以及从SRv6-unaware SF返回SRv6网络的代理。根据代理类型的不同,存在多种代理Service SID。
  • End.AS:Static Proxy(静态代理)SID,由SRv6 Proxy节点发布。End.AS的功能是剥离SRH,并将原始报文通过对应的接口或者虚拟接口(比如VLAN ID对应的接口)发送到SF。携带指定VLAN ID的报文从SF返回SRv6 Proxy之后,根据VLAN ID,将缓存的SRH插回报文中,继续转发。通过静态配置生成SRH与虚拟接口的映射关系,所以称其为静态代理SID。
  • End.AD:Dynamic Proxy(动态代理)SID,由SRv6 Proxy节点发布。End.AD在静态代理SID的基础上增加了动态学习的能力,将SRH与虚拟接口的映射关系由静态配置改变为根据接收到的报文的SRH动态生成。
  • End.AM:Masquerading Proxy(伪装代理)SID,由SRv6 Proxy节点发布。End.AM的功能是将真正的目的地址,即Segment List中的SID[0]更新到DA,从而伪装出携带真实目的地址的IPv6报文,转发到SF。SF返回的报文在SRv6 Proxy处需要将下一个SID替换成DA,继续转发。


Stateless SRv6 SFC只需扩展发布Service SID信息,就能实现SFC,且不需要在SFF上维护每个SFC的状态,所以相比NSH简单许多,有效地降低了SFC的部署难度,成为当前部署SFC的新选择。

当然,Stateless SRv6 SFC也存在一定的问题,例如当SF数目过多时, Segment List中SID数目比较多,SRv6报文头开销相对较大。当前大部分SF还不支持SRv6,所以还需要部署SRv6 Proxy,这在一定程度上增加了部署SFC的难度。


  1. Stateful SRv6 SFC

Stateful SRv6 SFC结合了SRv6和NSH两种技术,主要面向SF支持NSH但不支持SRv6的场景,是一种从非SRv6网络向SRv6网络演进的过渡型方案。在Stateful SRv6 SFC方案的标准文稿中,主要描述了两种解决方案。

方案一:业务平面为NSH,指导整条SFC转发,SRv6只用于连接SFF的隧道技术。

方案二:SRv6 Segment List携带整条SFC转发路径信息,贯穿整条SFC的多个SFF,但SFF到SF之间通过查询NSH转发表进行转发。


方案二与方案一的不同点在于入节点通过SRv6把整条SFC的路径显式地编程到Segment List中,而不是由NSH把多段SRv6隧道串联起来。方案二与方案一的共同点是SFF到SF这段路径的路由依然由NSH来决定。


总体来看,Stateless SRv6 SFC不必在SFF上维护每个SFC的状态,当SF支持SRv6时,方案的实现难度更小。Stateful SRv6 SFC的两种方案虽然都需要维护每个SFC的状态,但都兼容基于NSH的SFC解决方案,也不要求SF支持SRv6。基于NSH和SRv6结合的转发在一定程度上减少了SRv6报文头中Segment List内SID的数量,缩短了报文头的长度,是NSH网络向SRv6网络升级的一种可选的过渡方案。

相关文章
Cannot lock pid file /usr/local/freeswitch/run/freeswitch.pid.
Cannot lock pid file /usr/local/freeswitch/run/freeswitch.pid.
250 0
|
20天前
|
网络协议 网络安全
sudo mount -t nfs server_ip:/path/to/shared_directory /mnt/local_directory命令的作用是什么?
sudo mount -t nfs server_ip:/path/to/shared_directory /mnt/local_directory命令的作用是什么?
30 1
|
3月前
|
Shell
10-18|* * * * * /srv/salt/base/_modules/chmod_dir_sh.sh这个什么意思
10-18|* * * * * /srv/salt/base/_modules/chmod_dir_sh.sh这个什么意思
|
7月前
|
存储 网络协议 网络虚拟化
SRv6 基本结构
【5月更文挑战第4天】SRv6是一种网络功能指令化技术,将128位IPv6地址用于表达网络操作。它将业务需求转化为有序指令列表,由网络设备执行,实现灵活的网络业务编排和定制。
|
关系型数据库 MySQL
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
204 0
|
应用服务中间件 nginx
【已解决】nginx: [warn] conflicting server name “www.xxx.com“ on 0.0.0.0:443, ignored
nginx: [warn] conflicting server name “www.xxx.com“ on 0.0.0.0:443, ignored
834 0