一、前言
本文将介绍OpenDaylight与Mininet的原理并介绍他们的安装及简单的使用,本实验的环境为Liunx Ubuntu 16.04,已成功安装OVS,但没有安装Mininet。
二、原理
(一)OpenDaylight
OpenDaylight是一个软件定义网络(SDN)控制器平台,旨在简化网络管理和编程。它提供了一个可扩展的、开放的、可定制的框架,使用户能够通过统一的接口来管理和编程网络设备,无论这些设备属于哪个供应商或厂商。
OpenDaylight的工作原理涉及以下几个关键组件和概念:
1. 控制平面(Controller Plane):OpenDaylight的核心是控制平面,它负责网络设备的管理和控制。控制平面向网络设备发送操作指令,并从设备收集状态信息。它还负责网络中各个设备之间的通信和协调。
2. 数据平面(Data Plane):数据平面是网络设备的实际部分,它负责网络数据的转发。在SDN中,数据平面与控制平面分离,控制平面通过控制器来管理和配置数据平面上的设备。
3. 协议支持:OpenDaylight支持多种协议与网络设备进行通信,其中包括OpenFlow、NETCONF、SNMP等。这些协议使OpenDaylight能够与不同类型的设备进行交互,并获取设备的状态信息或者发送配置命令。
4. 插件和应用程序:OpenDaylight基于插件架构,可以通过插件将各种功能集成到控制器中。插件可以提供一些基本功能,如网络拓扑发现、路由计算等,也可以提供更高级的应用程序,如负载均衡、安全策略等。
5. 网络编程接口:OpenDaylight提供了一组API和编程接口,使用户能够使用自己喜欢的编程语言进行网络编程。这些接口包括RESTful API、Java API等,使用户可以编写自己的应用程序,并与OpenDaylight控制器进行交互。
总体来说,OpenDaylight的工作原理是通过控制平面来管理和控制网络设备,使用户能够通过统一接口进行网络管理和编程。它提供了灵活的插件体系和编程接口,可以根据用户的需求进行定制和扩展。
(二)Mininet
Mininet是一个用于构建虚拟网络的工具,旨在支持网络原型设计、测试和教育。它提供了一个轻量级的、可定制的网络仿真环境,可以在单个主机上模拟多个网络设备和主机之间的通信。
Mininet的工作原理如下:
1. 虚拟化网络设备:Mininet使用Linux内核的虚拟化技术(如Linux容器或虚拟机)来创建虚拟网络设备。它可以创建虚拟的交换机、路由器和主机,并通过虚拟网络链路连接它们。
2. 控制网络拓扑:使用Mininet的Python API或命令行接口,在主机上定义要模拟的网络拓扑。可以指定交换机、路由器、主机的数量,以及它们之间的连接方式(如拓扑结构、链路带宽等)。
3. 虚拟网络运行环境:一旦定义网络拓扑,Mininet会在主机上创建相应数量的虚拟网络设备,并配置它们的网络参数。每个虚拟设备都在Linux内核中运行,并使用不同的命名空间(network namespace)来隔离它们的网络栈。
4. 网络连接与通信:经过配置的虚拟网络设备可以通过Mininet创建的虚拟链路进行连接。Mininet使用虚拟以太网(veth)设备来模拟网络链路,并将链路连接到对应的虚拟设备上。这样,虚拟设备之间就可以进行网络通信。
5. 控制与监控:Mininet提供了多种方式来控制和监控虚拟网络。用户可以使用Python API或CLI命令来执行网络设备的配置和管理操作。此外,Mininet还支持网络流量监控和数据包捕获等功能,可以方便地进行网络性能分析和故障排除。
总体来说,Mininet的原理是通过虚拟化技术在单个主机上创建虚拟网络设备,并建立虚拟链路来连接它们。它提供了简单的接口和工具来定义和管理网络拓扑,以及监控和调试虚拟网络。这使得用户可以方便地进行网络原型设计、测试和教育。
三、实验需求
① 安装OpenDaylight
② 安装Mininet并创建拓扑
③ 使用OpenDayLight可视化Mininet创建的拓扑
四、实验步骤
(一)OpenDaylight的安装及使用
步骤一:更新源
步骤二:安装JDK 1.8
步骤三:配置JDK环境变量
(1) 命令如下:
(2) profile中环境配置如下:
(3)检查JDK环境:
注:检查JDK环境应与实验环境相匹配,特别注意java-1.8.0-openjdk环境的具体版本应与镜像版本一致,例如我的镜像版本为amd64,则需要用java-1.8.0-openjdk-amd64;i386镜像版本则需要java-1.8.0-openjdk-i386等;
步骤四:安装OpenDayLight并启用
(1)下载OpenDayLight
(2)解压压缩包
(3)进入解压后的文件夹并启动ODL
(4)进入web端OpenDayLight
注:此时,由于环境中并没有安装mininet,更没有在mininet中创建拓扑,因此需要安装mininet,本次采用直接使用命令的方式安装。
(二)Mininet的安装及使用
步骤一:安装Mininet并创建拓扑
(1)下载并安装Mininet
(2)测试Mininet是否正常
步骤二:查看ODL的效果
(三)通过mininet执行python脚本创建指定拓扑
步骤一:确定指定拓扑图及链路需求
需要创建的拓扑图如下:
S3-H3链路要求:带宽为10,延迟5ms,最大队列大小为1000k,损耗率为10%,并使能htb算法的流量管理功能
步骤二:编写Python脚本
使用vim创建一个名称为姓名全拼(XJY)的python文件,并写入创建要求拓扑所需代码
步骤三:修改该python文件为可执行文件
步骤四:执行命令运行脚本,效果如下
五、常见错误及解决方式
(1)故障一:git命令不存在
故障原因:该现象一般是由于Ubuntu16.04中并没有安装git指令,因此会报相应错误。
解决方案:使用apt install git安装gir命令即可
(2)故障二:使用apt相关命令时文件夹被锁定
故障原因:这种情况通常是由于缓存文件夹被占用导致的
解决方案:删除文件夹即可,具体指令为:rm -rf +/文件(夹)路径
(3)故障三:当执行命令脚本时可能会出现如下报错:
故障原因:这是由于ovs中缺少进行虚拟控制器测试的工具导致的,可通过执行如下命令解决:
sudo apt-get install openvswitch-testcontroller
sudo ln /usr/bin/ovs-testcontroller /usr/bin/controller