软件定义网络课程教学实验设计

2018-11-05 09:56何荣希林子薇雷田颖刘彤彤
科教导刊 2018年22期
关键词:软件定义网络实验教学

何荣希 林子薇 雷田颖 刘彤彤

摘 要 针对难以用硬件设备大规模部署软件定义网络实验平台的现状,基于Mininet软件搭建软件定义数据中心网络仿真平台,并进行实验测试,有助于学生了解软件定义网络的应用场景、掌握Mininet仿真平台、理解软件定义网络架构和OpenFlow协议的报文结构。

关键词 软件定义网络 数据中心网络 实验教学 Mininet

中图分类号:G424 文献标识码:A DOI:10.16400/j.cnki.kjdks.2018.08.047

Abstract For the current situation of large-scale deployment of software-defined network experimental platforms with hardware devices, Mininet software is used to build a software-defined data center network simulation platform, and experimental tests are conducted to help students understand the application scenarios of software-defined networks, master the Mininet simulation platform, Understand the message structure of the software-defined network architecture and the OpenFlow protocol.

Keywords software-defined network; data center network; experimental teaching; Mininet

0 引言

软件定义网络(Software Defined Network,SDN)可以解耦合控制层与数据转发层,很好地实现网络直接可编程,支持网络集中控制,使网络的开放性及灵活性得到空前提升,为网络的创新发展提供了良好的平台。SDN架构分为应用层、控制层和数据转发层。[1]其中,应用层用于业务应用开发,控制层负责下发及管理数据层的转发表,而数据转发层则依照控制层下发的流表进行高速数据转发。OpenFlow[2]作为应用最广泛的南向接口协议,很好地规范了控制层与数据层之间的信息交互形式。北向接口对上层业务应用开放,可实现底层网络设施对上层应用的透明,使得上层业务应用能够灵活地对底层网络设备及资源进行调用。[3]

近年来,SDN受到学术界及商业界的广泛关注,被认为是当前网络体系架构的主要演进方向之一。[4]自2008年Nick McKeown教授等人提出OpenFlow协议原型开始,普林斯顿大学、哥伦比亚大学以及苏黎世联邦理工大学等国外高校逐渐开设SDN课程,其他很多大学也将SDN教学加入高级网络课程中。近年来,我国对未来网络领域的发展也给予高度重视,各大高校建立不少SDN相关研究室,这为SDN技术的发展注入活力,同时也为本科生和研究生计算机网络课程的教学实践开辟了新方向。[5]目前國内很多高校虽紧追网络发展潮流,也有大量学者从事SDN的相关研究,但还少有开设SDN课程,相关实验教学手段更是匮乏。为了弥补这一缺陷,有必要在本科生和研究生课程中增加SDN相关实践环节。数据中心网络(Data Center Network,DCN)是SDN应用最广泛的场景之一,通过模拟测试软件定义数据中心网络(Software-defined Data Center Network,SDCN),有助于学生直观理解SDN架构的网络运行模式。为此,本文设计SDCN的相关仿真实验,利用Mininet仿真软件搭建、测试SDCN,并通过Wireshark软件抓包查看及理解OpenFlow协议的报文结构,有助于学生了解SDN应用场景、熟悉Minient仿真平台、理解SDN架构和OpenFlow协议。

1 实验平台搭建

由于受实验经费和场地等因素限制,难以采用硬件交换设备大规模部署SDN实验平台。为了解决这一问题,可利用Mininet仿真软件进行SDN仿真和测试。Mininet是Stanford大学Nick McKeown研究小组基于Linux Container架构开发的虚拟化平台,利用它很容易在一台PC上搭建SDN网络,对基于OpenFlow、Open vSwitch等协议进行开发验证,[6]而且Mininet安装简单,能够将实验成本大大降低,并提高实验灵活性。

1.1 Mininet安装

Mininet的安装方法主要有如下三种:

(1)在虚拟机中安装Mininet镜像:首先需要安装VMware Workstation、Virtualbox、VMware Fusion等虚拟机软件,其次下载Mininet VM镜像,并将下载好的镜像导入虚拟机软件中即可。

(2)通过GitHub获取安装Mininet源代码:在Ubuntu14.04或更高版本下,可通过命令#git clone http://github.com/mininet/mininet.git获取源代码,通过#mininet/util/install.sh进行指定参数进行安装。本文选择该方法,且指定参数-n3V 2.5.0来安装mininet的核心文件、OpenFlow1.3版本以及Open vSwitch2.5.0,更多可选参数可通过-h获取。

(3)Mininet文件包安装:在Ubuntu14.04或更高版本下通过命令#sudo apt-get install mininet/precise-backports安装Mininet文件包。

1.2 控制器部署

当前主流的远程控制器有NOX、POX、Floodlight、OpenDayLight和RYU等控制器。本文采用基于JAVA语言的Floodlight控制器。[7]

安装Floodlight控制器十分简单。首先,下载安装jdk8,修改profile文件,并通过java -version查看是否安装成功。其次,执行命令#sudo apt-get install build-essential default-jdk ant python-dev,通过#git clone git://github.com/floodlight/floodlight.git下载Floodlight1.2版本。随后,在版本1.2增加以下配置,#cd floodlight,#git submodule init,#git submodule update,#ant。最后,通过#sudo mkdir /var/lib/floodlight,#sudo chmod 777 /var/lib/floodlight创建文件夹并附上普通用户权限,通过#java -jar target/floodlight.jar即可运行Floodlight。当然还需要安装Eclipse等开发环境,并将Floodlight导入。

2 实验设计

2.1 实验目的

DCN作为SDN最为广泛的应用场景之一,其与SDN结合可以更好地实现网络的集中管理、故障检测及恢复、流量管理以及虚拟机迁移等功能。[8]该实验基于Mininet及Floodlight模拟SDCN,实验目的是帮助学生熟悉Mininet使用方法、理解SDN的工作原理和OpenFlow1.3协议的数据报文结构、掌握利用Mininet搭建自定义拓扑以及网络测试方法。

2.2 实验内容

实验内容如下:(1)利用Mininet的Pyhton API搭建多数据中心网络拓扑;(2)模拟数据中心的流量分布;(3)连接Floodlight控制器进行简单的路径选择;(4)启用Wireshark抓包软件,查看OpenFlow 1.3协议的报文结构。

2.2.1 拓扑创建

利用Mininet创建拓扑最简单便捷的方法就是通过网络构建参数--topo来创建单一交换机、线形、树形三种基本类型拓扑。Mininet 2.2.0或以上版本还可通过内置的可视化工具miniedit创建拓扑图。然而,上述两种方法创建大型拓扑时均存在一定局限性。因此,更通用的方法是通过Python API编写脚本来创建自定义拓扑结构,具体过程为:

首先,创建自定义拓扑类,并可以根据需要选择性导入Topo、Mininet、Open vSwitch、TCLink等包。其次,分别通过addSwitch( )、addHost( )和addLink( , )方法来添加交换机、主机和链路。最后,通过#mn --custom 文件名.py的方式启动拓扑。

本文通过编写自定义拓扑文件fattree.py,建立树形拓扑脚本,通过命令#mn --custom fattree.py --topo=mytopo –switch ovs,protocol=OpenFlow13 --controller=remote, (ip=, port=)来生成SDCN拓扑、连接Floodlight控制器、选择Open vSwitch交换机及OpenFlow1.3协议。树形SDCN网络拓扑包括核心层交换机、汇聚层交换机、边缘层交换机和主机,如图1所示,拓扑连接信息如图2所示。

2.2.2 网络测试

(1)用mininet>pingall进行连通性测试,结果如图3所示,表示8台主机之间均连通。

(2)用mininet>iperf h1 h2,mininet>iperf h1 h3,mininet>iperf h1 h5测试TCP带宽,结果如图4所示,每组测试均返回两个值,分别为发送数据的速率和接收数据的速率。

(3)分别用mininet>h1 ping –c 1 h2,mininet>h1 ping –c 1 h3,mininet>h1 ping –c 1 h5,测试ICMP包往返时间的最小值、平均值、最小值和算术平均偏差值,测试结果如图5所示。

(4)模拟数据中心流量测试。为了模拟数据中心流量的随机性,需要在mininet中添加自定义命令iperfmulti,为每台主机随机选取其余主机来组成iperf udp测试的通信节点对。具体过程为:首先在mininet/net.py中定义相应函数,其次在mininet/cli.py中注册函数,然后在bin/mn中将iperfmulti加入可执行命令列表中,最后,通过命令#~/mininet/util/install.sh –n重新编译mininet核心文件。

通过命令mininet>iperfmulti 来模拟多对随机主机间的通信。实验设置bw=0.025M,通过执行命令可为h1-h8这8台主机随机选取通信主机,结果如图6所示。测试结果以日志形式保存,示例如图7所示,可查看一定时间间隔内的传输速率、带宽、时延抖动和丢包率。

2.2.3 Wireshark抓包

在仿真测试过程中,开启Wireshark软件,以Packet-out消息为例,其理论报文结构如图8所示。抓取到的两个封装了ICMP和LLDP的Packet-out消息如图9-10所示。对比可验证理论结构与实际消息结构相符。

3 结语

作为未来网络架构演进的主要方向之一,SDN有着令人瞩目的发展前景。为了顺应网络的发展潮流,在本科生和研究生网络教学实验课程中引入SDN相关实践环节,对其教学和研究具有重要意义。SDCN作为SDN最广泛的应用场景之一,通过设计SDCN实验方案、搭建实验平台,学生可通过动手实践来学习SDN的应用场景、熟悉Mininet仿真平台、理解SDN架构及OpenFlow协议下的网络运行模式,有助于了解新型网络技术,培养对新兴技术的自主学习及创新能力。

参考文献

[1] Nunes B A A,Mendonca M, Nguyen X N, et al. A survey of software-defined networking: Past, present, and future of programmable networks[J].IEEE Communications Surveys & Tutorials,2014.16(3):1617-1634.

[2] Mckeown N,Anderson T,Balakrishnan H, et al. OpenFlow:enabling innovation in campus networks[J]. Acm Sigcomm Computer Communication Review,2008.38(2):69-74.

[3] 雷葆华,王峰,王茜,等.SDN核心技术剖析和实战指南[M].北京:电子工业出版社,2013:14-18.

[4] 崔来中.下一代互联网技术课程教学探索[J].计算机教育,2014(20):70-73.

[5] 徐磊.基于軟件定义网络的计算机网络课程实验教学研究[J].计算机教育,2017(5):150-153.

[6] 张连成,奚琪,郭毅,等.基于Mininet模拟环境的软件定义网络实验课程设计[J].计算机教育,2015(6):104-107.

[7] Floodlight Editor,Floodlight Manual[OL].[2017-09-11],http://www.project floodlight.org

[8] 吴强,徐鑫,刘国燕.基于SDN技术的数据中心基础网络构[J].电信科学,2013.29(1):130-133.

猜你喜欢
软件定义网络实验教学
LabVIEW下的模拟电路实验教学创新对策
基于科学探究的高中生物实验教学探索
网络与云技术在实验教学中的应用
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
初中化学实验教学中“微课”教学模式的探讨
谈初中化学实验教学的初探
中国联通SDN的思考和应用实例
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法