一种面向边缘环境的服务链线上部署系统

作者: 邓泽平 曾旺 刘畅

摘要:针对边缘环境计算和网络资源的异构性,文章设计并实现了一种基于软件定义网络和网络功能虚拟化的服务链部署系统,采用低耦合的分层设计,自上而下分为管理层、操作层和基础设施层。管理层根据一定的策略来安排节点映射和路由,操作层则定义了完整的服务链操作。文章利用软件定义网络和相关代理服务实现了对物理网络和节点的全局监控,因而支持管理层对虚拟网络功能和路由的细粒度调整。虚拟节点端口间通信可以根据自身需求选择三种网络之一,实现了逻辑隔离的同时也支持有向图的部署。文章设计了一种适应该系统的线上部署方法,在满足延迟约束的同时尽量平衡各节点负载。

关键词:网络功能虚拟化;服务链;软件定义网络;边缘计算

中图分类号:TP391        文献标识码:A

文章编号:1009-3044(2023)30-0074-04

开放科学(资源服务)标识码(OSID)

0 引言

对比云计算领域的数据中心(Data Center,DC) ,边缘计算网络更靠近底层用户,因而能通过提供低延迟的服务来满足工农业物联网实时控制的需求。不同层次的边缘计算(如移动边缘计算和微云)通常用于协助处理高带宽或低延迟的任务,并将高性能计算卸载到云,从而形成从设备、边缘网络到数据中心的多级服务模型[1]。当下,网络功能虚拟化(Network Function Virtualization,NFV) 框架下的服务链(Service Function Chain,SFC) 作为一种高效灵活的网络流处理模型受到了工业界广泛的关注和研究。基于地理隔离的多DC网络,学界提出了许多针对不同约束条件和优化目标SFC部署模型与算法[2],但较少讨论在边缘网络的实现。不同于现代DC广泛采用的Clos网络架构,边缘网络具有故障率高、延迟敏感和用户流量难以预测等特点[3]。软件定义网络(Software Defined Network,SDN) 通过分离控制层和数据层为网络的实时精细化管理提供了技术支持。笔者拟针对边缘环境,研究如何将SDN关键技术嵌入NFV框架内,从而实现统一和可靠的服务链部署。

1 系统架构

系统参考ETSI架构[4]自上而下分为服务管理层、操作层和基础设施层(如图1) 。管理层根据一定策略发出SFC请求,操作层进行解析并实现。其中节点监控模块部署各VNF,网络管理模块随后完成流量引导。SFC代理模块(SFC Agent) 作为安装在每个边缘物理主机内的代理服务,管理和监控本地虚拟计算和网络资源,并通过定义远程过程调用(Remote Process Call,RPC) 协议对上层提供统一的基础设施管理操作。控制器分布于各边缘设备之中,连同其中的专有应用和北向接口共同辅助SFC网络的构建。需要强调的是,图1中所示路径均同时包含南向控制和北向监测信息,如SFC Agent向上返回的服务器内部信息。除SFC Agent绑定本地接口外,其余模块都采用松耦合的远程调用与控制,使得整个系统能支持不同类型的网络接入,亦有利于水平方向的扩展。

2 网络架构

2.1 网域划分

为了平衡成本和复杂度,系统网络(如图2) 被划分为管理网络、私有网络和公共网络。管理网络承载了所有的控制流,如RPC和OpenFlow信道等。由于控制模块之间均为松耦合,且对时延和带宽不太敏感,所以管理网络只要求三层可达。

私有网络和公共网络均承载了业务流量,并与管理网互不交叉,故而保证了系统控制和流量波动互不影响。地理位置靠近且易搭建物理信道的边缘服务器之间依靠私有网络进行通信。私有网络是一个用若干交换机组成的二层交换网,并独立地分布在不同位置,保证了其内部高速低延迟的通信。公共网络是一个三层路由网,是所有边缘节点相互通信最后保障。

2.2 流量隔离

服务链整合了不同服务器的资源,但也导致其业务流量和风险的集中,因此必须对不同业务流量进行隔离。在物理服务器内部,所有VNF端口均以access模式连接于虚拟网桥br-int,并被分配了不同的VID(Virtual Local Area Network Identifier) 。进入私有网络的帧被虚拟网桥br-eth1重新分配了VID,而公共网络的数据包因属于不同VXLAN(Virtual Extensible Local Area Network) 隧道而相互隔离。在SFC的部署阶段,网络模块统一为所有VNF构建了虚拟网络并分配了独立ID,以保证系统的稳定性。

2.3 通信实现

1) 服务器内部通信。如图2所示,VNF_01的帧从指定虚拟端口进入br-int后会被加上“VID=11”标记,再受网络模块预设流表项(flow entry) 指示替换成标记“VID=21”,最后发送到VNF_02指定的端口。

2) 跨私有网络的通信。主机1内的br-int根据VID和目的MAC地址将来自VNF_01的帧经由trunk模式下的patch port转发至br-eth1。br-eth1将其VID从10替换为100,目的MAC替换成主机2的br-eth1相应端口地址,并从物理网卡eth1发送至私有网络。主机2上br-eth1网桥被设置为允许接收VID为100的帧,并根据自身流表替换VID和MAC并送入br-int,并经由指定端口进入VNF_03。

3) 跨公共网络的通信。当两个不同服务器内的VNF间无私有交换网络相互可达时,系统会为其在公共网络中构建独立的VXLAN隧道用于流量传输。如图2,来自VNF_02的帧在进入br-tun后,会根据目的MAC分配到相应的隧道(VNI=100) ,并封装成UDP数据包发送到HOST2上的隧道对端,待解封成帧后发送到VNF_04对应端口。

3 服务链部署

3.1 部署概览

当系统被部署到若干服务器并启动时,管理机会尝试连接各控制器和SFC Agent来获取相关信息。例如,SFC Agent需要返回服务器的CPU、内存、虚拟化支持状况以及公共网络拓扑、带宽和延迟测试结果等。同时,管理机会尝试进行一些基础组件安装、虚拟网络骨架的构建和镜像迁移等准备工作,并反复验证直至全部通过,随后正式进入SFC部署流程(如图3) 。

用户SFC请求采用YAML格式,管理层会对其进行合法性检查并在部署过程中根据环境和策略不断添加对用户透明的相关内部信息(如VNF位置、链接配置等)。例如图4展示了一条由两个位于不同服务器的节点构成的SFC。vnfs和links分别代表该SFC的节点和链路信息,in_aps和out_aps分别代表起始和终止位置。显然,由于使用了接口和流表来区分进出VNF的流,系统天然支持SFC有向图的部署。

3.2 全局状态监控

系统完成SFC部署和路由调整均需实时获取各物理节点和链路状态,这主要依赖于控制器和SFC Agent模块。控制器采用Ryu[5]作为框架,通过OpenFlow信道的packet_in和packet_out实现链路发现,并给所有交换机注入自学习转发的流表项。监控模块是Ryu中的一个协程,并在控制器启动后独立地监控链路信息、保存到本地字典和提供查询接口(如图5) 。SFC Agent是一个开机自启的systemd服务,其调用Docker、libvirt、OVS、Bash和系统调用等接口,在此基础上定义和封装了计算和网络资源的远程管理函数。

3.3 部署策略

边缘的异构性对服务链部署的影响有:(1) 对服务延迟非常敏感,进一步要求快速收敛的线上策略;(2) 用户需求和网络拓扑不稳定,流量规模和方向较难预测;(3) 流量规模和算力需求远小于DC,对计算资源的消耗几乎与包速成正比[6]。本文考虑一个由分布在一个地理区域的若干主机节点构成的独立边缘网络,节点间的链路延迟差异较大。限于某些特定的物理条件或安全策略,不相邻主机间通信依赖中间节点的中转。每条到来的SFC请求会规定最大服务时延、长度(VNF数量)、起始和终止物理节点。每个VNF会消耗一定量的CPU资源,但在服务部署前未知。在SFC请求不可预测的情况下,我们希望在满足时延约束的同时尽量为后续SFC请求保留CPU资源,以提高系统容量。

本文利用SDN架构实现了对链路状况的全局实时监测,并能细粒度地调整VNF间流量路径。根据前述网络架构,每个物理节点单独分配核心用于包转发,与VNF的资源消耗无关。对于一条路径上的每个节点,可以在满足资源约束下部署任意数量的VNF。多个VNF位于一个主机时,其内部数据交换延迟相比于SFC时延约束可以忽略不计。当不映射VNF时,该物理节点仅转发流量,因而更具灵活性。

整个线上服务链部署过程如下:

1) 估算SFC请求的CPU消耗。假设各VNF对CPU消耗相同,且与入口包速成正比。我们实际测算每台主机的包速-CPU线性关系,再根据入口位置历史流量分布预测此次SFC请求的包速。

2) 路径选择。为了简化问题以降低响应时间,只搜索从起点到终点的简单路径。定义某路径的CPU余量如下:

[PathAC=i=1sACiC]       (1)

路径中包含s个主机,ACi为从SFC代理模块获取的第i个主机的实时剩余CPU余量,[ACi/C]即为在第i个主机上可映射的VNF数量。当ACi其小于C时,对应的求和项为0,即不映射VNF。借助控制器监测模块搜索出所有满足时延约束的简单路径,并选择其中具有最大CPU余量的路径作为部署路径。若找不到时延满足的路径,或CPU余量均为0,则拒绝部署。

3) 确定VNF映射。VNF与主机间关系为N-1,N可取从0开始的任意整数。因此,在确定物理节点后,VNF映射转化为装箱问题。为了给未来的SFC请求尽量保留CPU资源,本系统采用简单的贪婪算法。采用最大堆算法选择具有最大CPU余量的主机部署VNF,直至所有VNF部署完毕。

4 实验验证

我们在4台全连接的服务器(32C/64T,64GB) 内建立KVM虚拟机来模拟NSFNet拓扑(如图6) 。每个虚拟机绑定到4个物理内核,节点间连通性由OpenFlow流表控制,链路延迟通过物理主机内核流量控制模块进行调节。

考虑到SFC请求和规模的随机性,为了测试系统能否均衡各节点负载以提高容量,我们进行了20轮测试,每轮测试尝试连续部署100条SFC。每条SFC请求的长度、负载和端点都是按照均匀分布随机选取。通过取所有测试的平均值得到成功率与SFC请求次数的关系(如图7) 。对比测试为限制物理节点路径长度不大于VNF数量,这对应于流量通过公共网络跳转的一般情形,而并非本系统直接利用中间节点进行转发。可以看出,系统的SFC数量小于某一临界值(最大系统容量)时可以将部署成功率可以维持在较高水平附近。系统较之于对比测试能取得更大的系统容量,同时在正常工作区间的部署成功率也提高了约10%。

5 结论

针对边缘环境,文章设计了一个基于SDN的虚拟功能服务链部署系统。所有控制层均互相松耦合,能够较好地适应复杂和不稳定拓扑。根据用户需求独立选择三种网络之一传输任意两个节点间流量。通过对链路的全局实时监控,实现了对VNF部署和路径选择的细粒度管理。全局策略对会消耗控制节点较多计算资源,有必要进一步针对更大规模拓扑和流量进行改进。

参考文献:

[1] 王其朝,金光淑,李庆,等.工业边缘计算研究现状与展望[J].信息与控制,2021,50(3):257-274.

[2] PEI J N,HONG P L,XUE K P,et al.Efficiently embedding service function chains with dynamic virtual network function placement in geo-distributed cloud system[J].IEEE Transactions on Parallel and Distributed Systems,2019,30(10):2179-2192.

[3] 王凌,吴楚格,范文慧.边缘计算资源分配与任务调度优化综述[J].系统仿真学报,2021,33(3):509-520.

[4] ETSI. NFV White Paper (First Release)[EB/OL]. [2023-08-26]. https://portal.etsi.org/NFV/NFV_White_Paper.pdf.

[5] MORITA K, YAMAHATA I, LINUX V. Ryu: Network operating system[C]//OpenStack Design Summit & Conference, 2012.

[6] 宋浒,甘让兴,夏飞,等.一种面向边缘环境的多实例服务链在线部署算法[J].计算机工程与科学,2021,43(2):218-227.

【通联编辑:代影】

上一篇 点击页面呼出菜单 下一篇