SDN-OpenDaylight与Mininet的原理、安装、使用

一、前言

        本文将介绍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的安装及使用

        步骤一:更新源

SDN-OpenDaylight与Mininet的原理、安装、使用_第1张图片

SDN-OpenDaylight与Mininet的原理、安装、使用_第2张图片

       步骤二:安装JDK 1.8

SDN-OpenDaylight与Mininet的原理、安装、使用_第3张图片

        步骤三:配置JDK环境变量

                1 命令如下:

               2 profile中环境配置如下:

SDN-OpenDaylight与Mininet的原理、安装、使用_第4张图片

                  3)检查JDK环境:

SDN-OpenDaylight与Mininet的原理、安装、使用_第5张图片

         注:检查JDK环境应与实验环境相匹配,特别注意java-1.8.0-openjdk环境的具体版本应与镜像版本一致,例如我的镜像版本为amd64,则需要用java-1.8.0-openjdk-amd64i386镜像版本则需要java-1.8.0-openjdk-i386等;

        步骤四:安装OpenDayLight并启用

        (1)下载OpenDayLight

        (2)解压压缩包

        3)进入解压后的文件夹并启动ODL

SDN-OpenDaylight与Mininet的原理、安装、使用_第6张图片

        (4)进入webOpenDayLight

SDN-OpenDaylight与Mininet的原理、安装、使用_第7张图片

SDN-OpenDaylight与Mininet的原理、安装、使用_第8张图片

         注:此时,由于环境中并没有安装mininet,更没有在mininet中创建拓扑,因此需要安装mininet,本次采用直接使用命令的方式安装。

(二)Mininet的安装及使用

        步骤一:安装Mininet并创建拓扑

         1)下载并安装Mininet

SDN-OpenDaylight与Mininet的原理、安装、使用_第9张图片

         2)测试Mininet是否正常

SDN-OpenDaylight与Mininet的原理、安装、使用_第10张图片

SDN-OpenDaylight与Mininet的原理、安装、使用_第11张图片

        步骤二:查看ODL的效果

SDN-OpenDaylight与Mininet的原理、安装、使用_第12张图片

(三)通过mininet执行python脚本创建指定拓扑

        步骤一:确定指定拓扑图及链路需求

        需要创建的拓扑图如下:

SDN-OpenDaylight与Mininet的原理、安装、使用_第13张图片

        S3-H3链路要求:带宽为10,延迟5ms,最大队列大小为1000k,损耗率为10%,并使能htb算法的流量管理功能

        步骤二:编写Python脚本

       使用vim创建一个名称为姓名全拼(XJY)的python文件,并写入创建要求拓扑所需代码

       步骤三:修改该python文件为可执行文件

       步骤四:执行命令运行脚本,效果如下

SDN-OpenDaylight与Mininet的原理、安装、使用_第14张图片

五、常见错误及解决方式 

1)故障一git命令不存在

        故障原因:该现象一般是由于Ubuntu16.04中并没有安装git指令,因此会报相应错误。

         解决方案:使用apt install git安装gir命令即可

SDN-OpenDaylight与Mininet的原理、安装、使用_第15张图片

2)故障二:使用apt相关命令时文件夹被锁定

         故障原因:这种情况通常是由于缓存文件夹被占用导致的

         解决方案:删除文件夹即可,具体指令为:rm -rf +/文件(夹)路径

(3)故障三:当执行命令脚本时可能会出现如下报错:

SDN-OpenDaylight与Mininet的原理、安装、使用_第16张图片

       故障原因:这是由于ovs中缺少进行虚拟控制器测试的工具导致的,可通过执行如下命令解决:

sudo apt-get install openvswitch-testcontroller  

sudo ln /usr/bin/ovs-testcontroller /usr/bin/controller  

SDN-OpenDaylight与Mininet的原理、安装、使用_第17张图片

你可能感兴趣的:(SDN(软件定义网络),实验,笔记,网络,sdn,可编程化网络)