软件定义网络北向应用的可编程实验设计

时间:2023-05-05 12:10:17 手机站 来源:网友投稿


打开文本图片集

摘  要 针对软件定义网络(Software Defined Network,SDN)

的可编程重要特性,以控制平面北向应用开发为主要内容,设计实验方案。该方案基于负载均衡的SDN应用场景,对Open-Daylight控制器北向接口采用Python编程并部署实现。一方面可以加强SDN的场景认知,为学习北向应用开发提供有意义的实践指导;另一方面能够促进学生深入理解SDN的可编程内涵,掌握SDN灵活部署网络新业务的架构优势,从而提升网络应用的实践创新能力。

关键词 软件定义网络;北向接口;网络课程;实验教学;负载均衡

中图分类号:G642.423    文献标识码:B

文章编号:1671-489X(2019)04-0121-03

Abstract This paper briefly introduces the programmable fea-tures of Software Defined Network (SDN), and puts forward the experiment for the northbound application development of con-trol plane. The experiment teaching scheme is designed with app-lication scenario of load balance, and is deployed on the north-bound interface of OpenDaylight controller by Python progra-mming. It not only provides meaningful practical guidance for learning northbound application but also promotes students’ un-derstanding of the programmable connotation of SDN. And the experiment is helpful to master the SDN architectural advantagesfor deployment of new services, so the practical innovation abi-lity of network applications can be enhanced.

Key words software defined network; northbound interface; net-work course; experiment teaching; load balance

1 引言

伴随着互联网规模的不断扩大与爆炸式增长,网络结构越来越复杂,网络上部署的应用也越来越多。由于传统网络架构的灵活性和可控性较差,增加部署协议或规则太为烦琐,严重阻碍了网络的进一步发展[1]。软件定义网络(Software Defined Network,SDN)正是为解决传统网络面临的问题与限制而提出的新型网络架构[2]。SDN将控制平面与数据平面分离,网络设备的所有控制逻辑集中在SDN控制器。控制器拥有网络的全局视图以及下层设备信息,并通过开放的北向API(Application Programming Inter-face,应用编程接口)为开发者提供软件编程的方式调用网络资源与编排网络业务,从而快速实现负载均衡、防火墙等网络新应用部署。因此,SDN控制平面北向接口的可编程特性,能够极大地推动网络业务创新,繁荣网络应用,成为SDN的核心特性之一[3]。

自SDN提出后,相关研究和产业化应用迅速展开,将SDN引入网络课程体系,是提高课程先进性与前瞻性的必然趋势[4]。作為网络新型架构,SDN技术新颖,学生在学习中往往存在一些问题,例如:SDN的理论知识前沿且抽象,缺少可借鉴的配套实践内容;对SDN应用场景的认知不足,很难理解SDN的可编程特性;无法准确把握SDN用于网络业务开发的架构优势,局限了网络创新能力培养。

针对上述问题,本文提出以SDN控制平面北向API的程序开发为主要内容,基于负载均衡的网络应用场景,对实验教学进行设计,并引导学生加以部署实现。该实验方案能够促进学生掌握SDN架构下编程实现网络新应用的基本方法,加强对SDN可编程内涵与网络业务快速部署的深入理解,有助于提升学生网络应用的实践创新能力。

2 重要知识点分析

负载均衡是一种服务器或网络设备的集群技术,将特定的网络业务(如网络服务或网络流量等)分担给多个服务器或网络设备,从而提高业务处理能力,保证业务的高可用性。在传统网络中部署负载均衡器成本较高,过程较为繁杂;但在SDN网络架构中,控制器拥有全局网络信息,能够对业务需求灵活调配。因此,负载均衡成为SDN的“杀手级”应用。

SDN北向接口是控制器为应用提供的API编程接口。编程者无须关注底层设备细节,就可以通过北向接口访问控制器管理的网络资源,设计网络策略并与网络进行交互,充分利用SDN的网络可编程优点。本实验以多路径的链路负载均衡为应用场景,通过对控制器开放的北向接口编程,及时获取底层设备的负载信息,并将数据分配到多条路径传输,从而快速灵活地部署并实现负载均衡应用。

3 实验方案展示

实验仿真环境搭建  基于链路负载均衡的应用场景,对控制平面北向API进行程序开发,旨在促进学生掌握SDN架构下编程实现网络应用的基本方法,理解SDN网络可编程的重要特性。利用开源控制器与软件交换机等虚拟化技术,能够在普通的实验室环境中轻松部署SDN控制平面北向应用开发所需的实验环境[5]。首先,利用虚拟仿真平台Mininet部署由终端虚拟主机、OpenvSwitch软件交换机、开源控制器构建的SDN仿真网络,效果可与真实网络环境相媲美。其次,在控制平面采用著名的开源通用SDN控制器OpenDaylight(ODL)。ODL提供一套基于SDN开发的模块化、可扩展、可升级、支持多协议的控制器框架,被行业普遍使用。其北向应用接口REST API的可扩展性很强,且简单易学,适用于浅层应用开发。学生仅需了解一些ODL提供的Python或Java API,就可以编程实现简单的SDN网络应用,省去了初学阶段理解控制器繁杂内部运行机制的麻烦,非常有利于实验教学展开。

实验采用的虚拟拓扑如图1所示,其中包括开源ODL控制器c0和两个主机h1、h2,以及四个OpenvSwitch软件交换机s1、s2、s3、s4;h1与h2之间存在两条等价传输链路s1-s2-s4和s1-s3-s4;通过控制器下发流表,实现主机间消息传递。

实验流程  首先,明确SDN北向应用开发的API参数。其次,通过ODL控制器北向Python API进行编程开发,功能流程如图2所示。基于图1拓扑,利用控制器监测数据传输,当传输流量达到指定负载的上限阈值,控制器重新下发流表,将数据分配至多条链路传输,达到全网的负载均衡。最后,查看并验证实验结果。

1)控制平面北向API的常用参数。在SDN网络架构中,控制器掌握全局网络并通过将流表下发至交换机,对数据传输与转发进行灵活管控,实现对链路负载的快速迁移与调配。因此,对ODL控制器的北向接口编程,首先重要的是让学生了解与流表相关的API,其功能与属性描述如表1所示。由此定义的s1交换机相关流表如下:

2)链路流量监测。基于图1的网络拓扑,由主机h1向h2传输数据,交换机s1承载的流量成为是否要进行网络负载均衡的重要指标。因此,调用ODL控制器北向API接口,编写Python程序代码,获取s1的端口流量,实施链路负载监测。核心代码如下:

3)负载均衡。若带宽负载达到指定阈值,则启用负载均衡功能,将数据流分配到两条路径并行转发。通过控制器北向接口,程序将流表轮流交替下发到交换机s1,使h1传出的数据分到s1-s2-s4与s1-s3-s4两条链路上传输,实现网络的负载均衡。其核心代码如下:

137:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/1", body=path1_body1, method="PUT",headers=headers)     //发送PUT消息,装载流表,传输路径为s1-s2-s4

⑦time.sleep(1)

通过终端观测的结论如图3所示,在应用负载均衡程序后,从s2和s3交换机的流表信息可以看出流表上各有数据包经过,表明数据流能够从两条链路传输至目的主机,程序实现成功。

4 结语

本文提出SDN控制平面北向应用可编程为核心的实验教学方案,以负载均衡为主要场景,以OpenDaylight控制器的Python API为编程接口,设计实验并给出相应的部署与实现过程。该实验方案将SDN的可编程特性落实到实际应用场景,让学生通过动手实践,能够深入理解SDN部署网络业务的灵活性与架构优势,为今后开发SDN新应用与新业务拓展思路,有助于提升学生的网络实践创新能力。

参考文献

[1]张少军,兰巨龙,胡宇翔,等.软件定义网络控制平面可扩展性研究进展[J].软件学报,2018,29(1):160-175.

[2]张朝昆,崔勇,唐翯祎,等.软件定义网络(SDN)研究进展[J].软件学报,2015,26(1):62-81.

[3]于洋,王之梁,毕军,等.软件定义网络中北向接口语言综述[J].软件学报,2016,27(4):993-1008.

[4]李养群,周梅.《软件定义网络原理与应用》课程教学探究[J].软件导刊,2016(7):213-215.

[5]叶进,冯露葶,何華光,等.基于虚拟化技术的软件定义网络实验教学方案[J].实验室研究与探索,2017,36(3):79-82.

推荐访问:可编程 定义 实验 设计 软件

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。