收藏 分享(赏)

基于K8S的SDN控制器可扩展性优化研究_李家兴.pdf

上传人:哎呦****中 文档编号:2369232 上传时间:2023-05-10 格式:PDF 页数:7 大小:2.02MB
下载 相关 举报
基于K8S的SDN控制器可扩展性优化研究_李家兴.pdf_第1页
第1页 / 共7页
基于K8S的SDN控制器可扩展性优化研究_李家兴.pdf_第2页
第2页 / 共7页
基于K8S的SDN控制器可扩展性优化研究_李家兴.pdf_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、电子设计工程Electronic Design Engineering第31卷Vol.31第6期No.62023年3月Mar.2023收稿日期:2022-01-07稿件编号:202201029基金项目:中国科学院战略性科技先导专项课题(XDC02070100)作者简介:李家兴(1997),男,重庆人,硕士研究生。研究方向:软件定义网络、网络通信技术。软件定义网络(Software Defined Networking,SDN)1中,控制面接收数据面消息,利用全局网络拓扑及带宽资源信息制定灵活的可编程策略2。网络规模的扩大暴露出了控制面处理能力不足的问题,为此出现了控制面可扩展性的相关研究3-6

2、。围绕控制面可扩展性的研究主要集中在扁平化多实例扩展7-9和层次型分层控制扩展10-12两种方法,但该两类方法面临着节点状态同步开销大、逐层传递时延高、线性扩展能力弱以及弹性控制能力差的问题。基于K8S的SDN控制器可扩展性优化研究李家兴1,2,朱晓东1,曾学文1,2(1.中国科学院声学研究所 国家网络新媒体工程技术研究中心,北京 100190;2.中国科学院大学,北京 100049)摘要:针对软件定义网络规模不断扩大而出现的控制面处理能力不足问题,提出控制器模块化解耦合并基于K8S进行模块化水平扩展的方法,扩展控制面处理能力。为实现模块化无状态水平扩展和消息在模块间的高效分发,采取应用对消息

3、主动订阅的机制并通过高可靠的 Redis集群对订阅规则进行管理的方法。此外,考虑网络流量动态变化的特点,利用K8S对控制器各模块进行资源感知并进行水平扩展,以增强控制面的弹性伸缩能力。实验结果表明,所提方法相对于扁平化多实例扩展方案,控制面处理能力能够线性扩展并且具有更低的响应时延、更高的系统吞吐,证明了所提方案的有效性。关键词:软件定义网络;K8S;控制面;消息订阅;弹性伸缩中图分类号:TN915.1文献标识码:A文章编号:1674-6236(2023)06-0057-07DOI:10.14022/j.issn1674-6236.2023.06.013Research of SDN cont

4、rol plane scalability based on K8SLI Jiaxing1,2,ZHU Xiaodong1,ZENG Xuewen1,2(1.National Network New Media Engineering Research Center,Institute of Acoustics,Chinese Academy ofSciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100049,China)Abstract:In order to solve the

5、 problem of low processing capacity of the control plane with the expansionof software defined network scale,a method of controller modules decouple and modular horizontalexpansion based on K8S is proposed.To achieve stateless modules horizontal expansion and effectivemessages distribution between m

6、odules,a mechanism of application subscribing messages and use theRedis cluster to manage the subscription rules is taken.In addition,considering that the network traffichas the characteristic of dynamic change with time,K8S is used to sense resource utilization and performmodular horizontal expansi

7、on to enhance the control plane s elastic expansion capacity.The result showsthat,to compare with the flat multiinstance expansion scheme,the method we proposed can expand thecontrol plane linearly,has a lower response delay,and a higher system throughput,which proves theeffectiveness of the propose

8、d method.Keywords:SDN;K8S;control plane;message subscription;elastic scaling-57电子设计工程 2023年第6期该文针对控制面扩展性差的问题,基于 K8S 系统架构13对控制器模块化解耦合进行水平扩展,提升控制平面的可扩展性能力。1K8S系统架构K8S 容器编排系统由 Google 开源推出,该文利用 K8S编排特性对 SDN 控制面可扩展性进行研究。K8S 系统架构如图 1 所示,包含 Worker 节点和管理Worker节点的Master节点。图1K8S系统架构图Master节点用于对整个K8S集群进行全局控制,节

9、点内部包含 Kube-apiserver、controller-manager、scheduler以及etcd等核心控制管理组件,其中Kube-apiserver是供客户端和其他组件进行相互调用的对外接口,controller-manager 用于监视管理集群的资源状态,scheduler负责对集群资源进行调度,etcd则存储集群状态。Worker节点执行具体的应用程序,是任务工作节点,通常包含 kubelet、kube-proxy 以及 cAdvisor 等核心组件,其中 kubelet 组件从 Kube-apiserver 拉取Pod 生命周期信息,负责 Pod 的创建、启动以及删除停止任

10、务,其中Pod为K8S集群进行资源调度的最小单位,内部由一个或者多个 Docker容器组成,kube-proxy 负责进行服务发现和访问路由,cAdvisor 则用以监测统计集群内部主机、Service 以及 Pod 的运行数据。K8S 集群内部除了前述各组件之外,还涉及Label、Selector 以及 Service 等资源,其中 Label 是为Pod所指定的标签,集群内部的 Selector选择器用于根据 Pod 的 Label 标签筛选出一组具有相同标识的Pod 分组构建 Service 服务,以暴露 IP 地址和服务端口的方式提供服务,当客户端访问Service时,会结合负载均衡算

11、法从 Service的后端 Pod副本中选取一个Pod提供服务,通过这种方式将复杂的处理逻辑隐藏于Service之后。2基于K8S的SDN控制器架构2.1网络控制器架构设计对 SDN 控制器进行模块化解耦合,将解耦后的控制器子模块封装成相互独立的Service部署于K8S集群,通过扩展各模块Service的 Pod数量,提升模块化处理能力,从而以增强控制器各子模块处理能力的方法提升控制面对 SDN消息的处理能力,该文所设计的架构如图2所示。图2基于K8S的控制器架构图如图 2 所示,将 SDN 控制器拆分成包括协议和驱动模块、控制模块、设备管理模块、配置模块以及一系列应用模块在内的多个子模块,

12、各模块之间建立 TCP连接传送 SDN 消息。在该设计中,为追求模块的性能和稳定性,采用高性能的 NGINX Web服务框架14对各子模块进行开发。协议和驱动模块:该模块位于 SDN 控制器最南端,通过 OpenFlow 协议15或具有协议无关性质的POF协议16与交换机交互 SDN消息。对消息的处理流程包括两个阶段,第一阶段是当交换机上线时,该模块负责与交换机设备进行握手并获取交换机相关设备信息,第二阶段过程中,该模块接收交换机上报的 packet-in 消息以通知控制器处理新数据流的首个网包以及请求删除流表项的 flow-removed 消息,并逐级往上传递至应用模块(applicatio

13、n module)。控制模块:负责将所接收到的南向流量分发至北向各应用模块,并将应用模块处理后的响应消息-58向下转发至协议和驱动模块。为实现 Pod无状态水平扩展以及消息在模块间的高效分发,该文采用北向应用对消息进行主动订阅并使用高可靠的 Redis数据库17对订阅规则进行管理的方法,该部分内容将在2.2节详细展开。设备管理模块:控制平面为获取网络拓扑,通过LLDP(Link Layer Discovery Protocol)协议进行链路发现,设备管理模块负责对数据平面的设备状态以及所获取到的链路状态信息进行管理,供北向应用进行调用。配置模块:该模块为控制面操作人员提供了一个使用方便、配置简

14、单的接口,对转发设备的 IP、MAC 等物理接口信息进行配置并对配置信息进行存储管理。应用模块:交换机端发起的 SDN 请求消息最终交由此模块处理生成 packet-out消息或 flow-mod消息,并向下传递最终在交换机上生效,该模块的处理逻辑可根据具体应用需求进行灵活编程。控制器模块解耦后,交换机所发起的 SDN 请求消息通过协议和驱动模块上送至控制模块,控制模块将所接收到的消息分发至应用模块进行处理,应用模块生成的响应消息又通过控制模块转发至协议和驱动模块,最终下发至软件交换机。控制器模块化解耦之后将各模块部署成K8S集群中不同的Service,从图3所示的关系图中可以看出,一个Ser

15、vice后端可以包含多个Pod,当控制器子模块接收到访问请求时,从组成该Service的Pod集合中选出一个Pod提供服务。图3Service与Pod关系图在上述控制器架构中,协议和驱动模块、控制模块以及应用模块需要处理大量的 SDN消息,对处理性能具有很高的要求,通过增加 Service 后端 Pod 副本数量的方法增强子模块处理能力,进而提升整个控制面的可扩展性能力。2.2基于K8S的网络控制器关键技术2.2.1高效分发与高可靠机制在常见的网络控制器架构中,协议和驱动模块通过 TCP 协议与交换机连接,解析控制消息,将packet-in消息通过南向接口提交给核心层,核心层按照应用注册网包处

16、理器的优先级逐个串行回调应用的网包处理函数,该种方法面临着串行回调过程所带来的消息冗余处理问题,特别是当控制器上部署越来越多的新应用,控制时延会不断增大。该文采取控制器模块解耦合机制,解决模块耦合过重的问题。此外,采取应用对消息进行主动订阅的机制并利用高性能Redis数据库对订阅规则进行管理,实现控制模块的无状态水平扩展以及控制模块与应用模块之间消息的高效分发。消息的主动订阅与高效分发结构如图4所示。图4消息订阅分发结构图K8S 集群内部 DNS 支持对 serviceName 的解析功能,各 Service之间通过 serviceName建立 TCP连接即可进行相互访问。此外,交换机向控制器上报的packet-in 和 flow-removed 消息中包含 table id(数据流表标识)和entry id(流表项标识)字段。基于上述两项特点,以table id和entry id组成key值,以北向各应用模块对应的serviceName作为value值,构成消息订阅规则,并使用高可靠的Redis集群对订阅规则进行管理。以下是控制模块的初始流程描述,初始化流程中,启动各应用模块、各应用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 专业资料 > 其它

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2