基于SRv6的可编排计算优先网络实现方法
2022-05-19曹云飞霍龙社中国联通研究院北京100048
曹云飞,霍龙社,何 涛(中国联通研究院,北京 100048)
0 引言
随着5G与人工智能的发展,车联网、远程医疗、智能工厂等新兴产业不断涌现,越来越多的数据需要就近处理和分析。为了满足这些需求,越来越多的计算下沉到接近数据源的网络边缘。随着边缘计算的诞生,多级计算节点遍布网络。通过网络将算力连接起来并进行统一管理和调度成为算力网络的目标。
算力网络是一种根据业务需求,在云、网、边之间按需分配和灵活调度计算资源、存储资源以及网络资源的新型信息基础设施[1]。随着算力网络的关注度持续升高,该技术领域产生了不同的技术类型[2]。IRTF成立了在网计算研究组(COINRG)[3-6],在网计算指网络设备的功能是“转发+计算”。算力网络领域的计算优先网络(Compute First Networking,CFN)以及基于SRv6 和IPv6+的算力网络均属于在网计算。CFN 将当前的计算能力状况和网络状况作为路由信息发布到网络,根据算力状况以及网络状况计算和执行路由。SRv6 通过源路由实现报文转发路径的可编程。CFN为基于算力的路由提供了解决方案,但是目前还没有算力编排的能力。为了在网络层面实现算力编排,为CFN 提供算力编排能力,本文提出了一种新的基于SRv6的可编排计算优先网络实现方法。
1 研究背景
1.1 CFN
CFN 将服务节点的计算能力状况和网络状况作为路由信息发布到网络,网络基于虚拟的服务ID 将计算任务报文路由到最合适的计算节点,实现最优的用户体验、计算资源利用率以及网络效率[7]。CFN 能够为应用提供的核心价值是基于算力和算法动态调度计算资源,保证业务的用户体验。
1.1.1 CFN概述
如图1 所示,CFN 网络按角色分为服务器端、CFN域和客户端[3]。图1 在参考文献[3]基础上进行了改动:边缘站点改为站点,服务节点增加了资源接口和服务接口,CFN 层改为CFN 域。由于算力网络不仅包括边缘站点,未来也会包括数据中心和端。算力服务提供者不仅限于边缘站点,所以本文将边缘站点改为站点。由于服务节点通过资源接口向CFN 路由器提供资源信息,通过服务接口提供对外计算服务,所以服务节点增加了资源接口和服务接口。由于多个CFN 路由器组成网状拓扑结构,而不是两两相连的一层,所以本文将CFN层改为CFN域。
图1 CFN网络拓扑
1.1.2 CFN控制面原理
如图2 所示,CFN 控制面完成算力信息的全网同步。站点的服务节点将本地服务状态注册到CFN 路由器的本地注册表。本地服务状态包括Service ID——服务的唯一标识、服务IP 地址和计算资源情况等。CFN 路由器将本地服务状态基于CFN 路由协议加载到报文中,将服务状态扩散到其他CFN 路由器。CFN 路由器基于CFN 路由协议将本地以及其他CFN路由器扩散的服务状态信息汇总生成服务信息路由表。
图2 CFN控制面原理
1.1.3 CFN数据面原理
CFN 数据面完成客户端对服务节点Service ID 请求的路由转发。CFN Ingress 节点收到请求后,根据网络情况、计算资源情况综合评估,选择一个服务节点以及相关联的CFN Egress 节点,将原请求数据包封装并发送。CFN Egress 节点收到数据包,根据Service ID查找对应服务节点IP,将数据封装并发送。外层数据包源地址为客户端IP,目的地址为服务节点IP。内层数据包源地址为客户端IP,目的地址为Service ID。服务节点收到数据包后在本地查询与Service ID 绑定的服务地址,调用对应的服务,将结果返回给客户端。
1.2 SRv6
SR(Segment Routing)是源路由技术的一种,节点选择路径,并且引导数据包沿着该路径通过网络,其做法是在数据包头部插入带顺序的segment 列表,以指示接收到这些数据包的节点怎么去处理和转发这些数据包。为了实现SRv6 转发,需要向IPv6 报文中插入一个段路由头(Segment Routing Header,SRH)的扩展头,存储IPv6 的Segment List 信息。报文转发时,依靠Segments Left 和Segment List 字段共同决定IPv6目的地址(IPv6 DA)信息,从而指导报文的转发路径和行为。
128 位SRv6 Service ID 主要由标识节点位置的LOC字段(IPv6前缀格式,可路由)、标识服务和功能的FUNC字段(本地识别)以及存储相关参数的ARG字段3 部分组成。一个标准的SRv6 Service ID 可以定义特定节点的路径信息、服务和功能信息。
SRv6 网络编程标准中,SRv6 节点(Endpoint)通过本地定义的行为(Behavior)处理SRv6 报文。SRv6 定义了多种Endpoint Behavior,每个节点需要实例化它们并分配Service ID,同时通过路由协议公布,以便外部了解节点所能提供的Behavior。常用的Endpoint Behavior 有END、END.X、END.DT4、END.DT6 等,实现Underlay选路、Overlay业务承载等功能。
2 基于SRv6实现可编排计算优先网络
CFN 借助路由协议将获取的计算资源信息发布给相邻的CFN 路由器,实现计算资源信息的全网扩散。SRv6 通过在IPv6 报文中新增SRH 报头来控制报文的转发路径和行为,从而提供网络可编程能力。通过SID(segment ID)中的Function 字段、Arguments 字段以及Segment 序列之后的Optional TLV(Type-Length-Value)提供可扩展能力。
SRv6 的这些优点为算力编排以及参数传递提供了技术基础。CFN 为基于算力的路由提供了解决方案,但是没有提供算力编排的能力。为了在网络层面实现算力编排,为CFN 提供算力编排能力,本文提出了一种新的基于SRv6 的可编排计算优先网络实现方法。基于SRv6技术来实现CFN数据传输,实现报文转发路径的可编程,从而在网络层面实现算力编排。
为了基于SRv6 技术实现CFN 数据传输,所有的CFN 路由器需要支持SRv6。CFN 路由器需要支持SRv6 报文的识别、SRv6 报文的处理以及SRv6 报文的转发。
IS-IS 属于链路状态IGP 路由协议,采用TLV 携带链路状态信息,可以在不动协议主体的情况下,通过增加部分TLV 类型就可以支持IPv6、SRv6 等新协议特性。在CFN 域中通过IS-IS 协议来扩散CFN 路由器的SID 信息。支持SRv6 的服务节点也需要通过IS-IS 协议扩散自己的SID信息。
2.1 客户端、服务节点均为IPv6设备
随着IPv6 技术的推广,越来越多的设备支持IPv6。如果客户端和服务节点均支持IPv6,而且服务节点支持SRv6,则CFN Ingress 节点作为SRv6 源节点分类器(Service Classifier,SC),服务节点作为Endpoint节点(SRv6 Segment Endpoint Node),服务节点将SRv6的SID 作为Service ID。服务节点定义本地行为处理SRv6 报文,根据Service ID 调用服务。在客户端和服务节点均支持IPv6的情况下,本技术方案基于SRv6技术实现CFN 数据传输,完成客户端对服务节点Service ID 请求的路由转发。客户端和服务节点均支持IPv6,而且服务节点支持SRv6 的情况不需要CFN Egress 节点参与算力路由,具体网络拓扑如图3所示。
图3 客户端、服务节点均为IPv6设备的网络拓扑
客户端请求Service ID 服务,源地址为客户端地址,目的地址为Service ID。CFN Ingress 节点收到请求后,查找服务信息路由表,根据Service ID 查找服务节点的Service IP。CFN Ingress 节点作为SRv6 源节点SC封装SRv6 数据,数据源地址为客户端IP,目的地址为Service IP。在数据包头中插入SRH(Segments Left=1),SRH 中的Segment List 为
服务节点收到数据包,Segments Left 减1,Seg⁃ments Left=0,取出Segment List[0]对应的值Service ID。服务节点在本地查询与Service ID 绑定的计算服务,调用服务并返回结果。返回数据的数据源地址为Service ID,目的地址为客户端IP。
Service ID 可以是服务节点的某个端口或者某个Loopback IP。服务节点调用Service ID 对应的端口或者Loopback IP。如果服务节点位于gateway的位置,则Service ID 对应于内网某个服务器的内网IP。服务节点调用该内网IP 对应的服务。服务节点位于gateway位置的网络拓扑如图4所示。
图4 服务节点为gateway的网络拓扑
客户端请求服务的数据传输过程如图5所示。
图5 客户端、服务节点均为IPv6设备时的数据流
2.2 客户端、服务节点均为IPv4设备
如果客户端和服务节点均为IPv4设备,则CFN In⁃gress 节点作为SRv6 源节点SC,CFN Egress 节点作为Endpoint 节点。CFN Egress 节点定义本地行为处理SRv6报文,解封装SRv6数据。CFN Egress节点作为服务节点的代理节点,将IPv6 报文转换为IPv4 报文并调用服务节点的服务。CFN Ingress 节点和CFN Egress节点作为IPv6 和IPv4 协议转换节点需要支持IPv6 和IPv4双栈。双协议栈技术就是指在1台设备上同时启用IPv4 协议栈和IPv6 协议栈。CFN Ingress 节点和CFN Egress 节点的不同接口上,分别配置了IPv4 地址和IPv6 地址,并分别连接了IPv4 网络和IPv6 网络。CFN 域内为IPv6 网络,CFN 域外为IPv4 网络,具体网络拓扑如图6所示。
图6 客户端、服务节点均为IPv4设备时的网络拓扑
在客户端和服务节点均支持IPv4 的情况下,本技术方案基于SRv6技术实现CFN数据传输,完成客户端对服务节点Service ID 请求的路由转发。客户端发送的数据由CFN Ingress 节点封装为SRv6 报文,数据源地址为CFN Ingress IPv6 地址,目的地址为CFN Egress IPv6 地址。CFN Ingress 节点生成SRH:(Segments Left=0):
图7 客户端、服务节点均为IPv4设备时的数据流
对于客户端和服务节点支持IPv6 的情况以及客户端和服务节点支持IPv4 的情况,本文详细说明了基于SRv6的可编排计算优先网络实现方法。
3 应用实施例
为了验证本文所提方法的实际效果,特设计并实现了下述应用实施例,对于视频服务提供附加的鉴别服务。
本应用实施例包含2 个服务节点,A 提供视频服务,B 提供鉴别服务。客户端向A 服务节点请求视频服务,B 服务节点对客户端所请求的视频内容进行鉴别。如果视频内容符合规定,则视频正常返回给客户端。如果视频内容不符合规定,则返回错误信息给客户端。客户端只知道视频服务即A 节点的Service1 ID,不需要知道鉴别服务即B 节点的Service2 ID。CFN Ingress 节点、CFN Egress1 节 点、CFN Egress2 节点、视频服务节点A 和鉴别服务节点B 组成了功能业务链SFC。CFN Ingress 作为分类器SC 位于SFC 域的边界入口,报文进入SFC 域后会首先进行流量分类。视频服务节点A 和鉴别服务节点B作为服务功能节点SF(Service Function)提供增值服务功能。由于SF 本身不支持处理SRv6 报文,所以由CFN Egress1 节点和CFN Egress2 节点作为业务链转发节点SFF(Service Function Forwarder)代表SF 处理SRv6 报文,删除SRv6封装信息,通过本地逻辑组件将报文发给SF,接收从SF 发回的报文,重新为之添加SRv6 封装信息。本应用实施例网络拓扑如图8所示。
图8 应用实施例网络拓扑
客户端请求视频服务的流程如下:客户端请求视频服务即Service1 ID服务,CFN Ingress节点收到请求,查找服务信息路由表,根据Service1 ID 查找服务端对应的Egress 节点Egress1。根据事先编排的业务逻辑,CFN Ingress 查找Service2 ID 对应的Egress 节点Egress2。CFN Ingress 节点封装SRv6 数据报文,数据源地址为Ingress IP,目的地址为Egress1 IPv6 地址,生成SRH:(Segments Left=1):
CFN Egress1 节点将Segments Left 减1,则Seg⁃ments Left=0,将Egress2 IPv6 地址拷贝到目的地址。Egress1 封装数据,外层数据源地址为Egress1 IPv6 地址,目的地址为Egress2 IPv6地址。内层数据源地址为客户端地址,目的地址为Service1 ID。CFN Egress2 节点解封装SRv6 数据报文,取出内层数据得到Service1 ID,根据事先编排的业务逻辑由Service1 ID 查找到Service2 ID,查找本地服务注册表,根据Service2 ID 查找对应Service2 IP。CFN Egress2 节点封装数据并发送。封装的数据报文外层数据源地址为Egress2 IPv4地址,目的地址为Service2 IP。内层数据源地址为客户端IP,目的地址为Service1 ID。鉴别服务收到数据后调用鉴别服务并返回结果。返回的数据报文外层数据源地址为Service2 ID,目的地址为Egress2 IPv4 地址。内层数据源地址为客户端IP,目的地址为Ser⁃vice1 ID。CFN Egress2 节点收到鉴别服务返回的数据后,取出内层数据并返回给客户端。数据源地址为Service1 ID,目的地址为客户端地址。数据传输过程如图9所示。
图9 应用实施例数据流
本应用实施例为用户提供了视频服务和附加的鉴别服务,对客户端暴露的只有视频服务(节点A),鉴别服务(节点B)对于客户端是隐藏的。基于本技术方案的应用实施例在网络层实现了业务编排,在视频服务基础上增加了鉴别服务,该方案不需要修改视频服务的业务逻辑。如果不在网络层做业务编排,在应用层做业务编排需要改变视频服务现有业务逻辑。视频服务在处理用户请求后,不是将结果返回给客户端,而是将结果发送给鉴别服务,最后将鉴别结果返回客户端。本应用实施例在网络层解耦了视频服务和鉴别服务,从而消除了视频服务和鉴别服务之间调用的工作量。本应用实施例不需要客户端感知鉴别服务,从而减少了客户端的业务复杂度。
4 结束语
CFN 可以实现用户的就近接入和服务的负载均衡,适应服务的动态性,但目前缺乏算力编排能力。本文提出了一个新的基于SRv6 的可编排计算优先网络,使用SRv6 实现CFN 数据传输,通过实现报文转发路径可编程,在网络层面实现算力编排,将多个服务编排成为SFC 来实现复合业务,从而提高了CFN 的业务创新能力。基于该方法,本文设计并实现了一个可编排计算优先网络的应用实施例,可在网络层解耦2个在业务逻辑上有依赖关系的服务。2 个服务不需要感知到对方,消除了2个服务之间调用的工作量,减少了客户端的业务复杂度。