SDN-based Network Management Solution

摘要:

在此项目中,我们开发了一种网络管理应用程序,以监视和控制由支持OpenFlow的交换机和支持SNMP的设备组成的企业网络。 我们正在利用由控制器集中式软件定义网络控制器旋转的REST接口来运行此应用程序。 我们正在使用的SDN控制器是一个名为OpenDaylight(ODL)的开源控制器。 我们已使用SNMP和OpenFlow南向插件与网络设备进行通信。 为了测试该应用程序,我们在GNS3中模拟了一个网络,该网络结合了传统设备和OpenFlow交换机。

介绍:

用Opendaylight控制器结合提供的SNMP等插件,搭建网络拓扑。我们检索网络统计信息,链路统计信息以及有关基础设备(例如交换机和路由器)的信息,以控制和改善网络性能。尽管SDN具有许多优点,但它仍然缺乏良好的网络管理解决方案,并且难以让运营商实现全面部署、完全替代其原有的网络管理解决方案。因此有必要用SDN来结合传统网络管理方法(因为现在的底层都是传统的)进行管理。

OpenDaylight介绍:

  1. 模型驱动的服务抽象层(MDSAL):它将YANG模型用作行业标准,以将基础设备映射到网络应用程序,以随时支持现有网络中的技术和硬件。
  2. 支持标准网络管理的模块化插件式南向接口方法, 与这些其他设备和OpenFlow一起也受支持(就是可以统一管理)。
  3. 基于内部的北向接口抽象了基础架构的详细信息,并且SDN功能支持各种网络应用程序。
  4. 网络虚拟化以及灵活的策略机制在多服务环境中提供了多租户。

    它用于与控制器在相同地址空间中运行的应用程序。

    A.OSGi 服务:

    OSGi是一个JAVA框架,可为OSGi模块和服务提供模块化和版本控制以及控制器和生命周期管理的可扩展性。 它有助于在运行时将插件加载到控制器中。

    B.双向RESTful Web服务

    与控制器不在同一地址空间中的应用程序使用REST服务。



    南行中支持许多协议,这些协议动态链接到SAL(服务抽象层)。 SAL提供请求的服务,而与网络设备和控制器之间使用的基础协议无关。

    Opendaylight主要组件

A.服务抽象层

SAL有助于分离北向应用程序和南向协议插件。 SAL是控制器的模块化设计的中心部分,该模块支持多个南向协议。 拓扑管理器使用SAL提供的设备发现之类的服务来构建拓扑和设备功能。 插件提供有助于构建服务的功能。 如上所示,控制业务逻辑将服务请求发送到SAL,服务管理器通过插件管理器将它们映射到相应的插件,并使用最合适的插件与网络设备进行交互。

B.模型驱动的服务抽象层

为模型驱动的服务抽象层(MD-SAL)建立了新的体系结构。 控制器的插件可以是服务/数据使用者或服务/数据提供者。 提供商通过其API在此生成服务和数据。 消费者消费提供者提供的服务。 例如,OpenFlow插件用于添加,修改和删除交换机中的流。 作为OpenFlow插件服务的使用者之一的转发规则管理器为客户端提供了高水平的流编程服务。 这提供了组合北向和南向API的机会。 YANG使用一种用于数据和服务抽象的建模语言。 它提供:1建模单个系统组件。 2定义关系和语义元素。 3对控制器组件提供的功能和XML数据的结构进行建模。

C. Karaf:

可以将应用程序和组件部署到由OSGi运行时组件Apache Karaf提供的轻量级容器上。 Karaf的某些功能包括动态配置,热部署,供应,本机OS集成,日志记录系统,远程访问,管理实例。 下载OpenDaylight控制器软件包后,它将附带所有功能,并且必须手动安装这些功能。 Karaf帮助安装功能。

插件

A. OpenFlow插件

OpenFlow接口可实现SDN架构的转发层和控制层之间的交互。 它有助于实现OpenFlow。 它支持OpenFlow 1.0和OpenFlow 1.3x。 它基于模型驱动的服务抽象层。

OpenFlow 1.3插件支持错误处理,消息处理,状态管理,映射功能,连接处理,事件处理以及传播到上层的功能。

OpenFlow插件功能可以分为四个区域,如下所示:

设备管理器:设备管理器提供了与交换机的低级交互。 它有助于跟踪并执行对请求实体的响应分发。

连接管理器:确定交换机功能和身份并提供早期协商。

统计管理器:它有助于维持计数器与开关之间的同步。

RPC管理器:它有助于将MD-SAL请求路由到设备。

B.SNMP插件

SNMP是用于网络管理的简单网络管理协议。 它用于从交换机,路由器,打印机等收集信息。此插件使控制器和应用程序可以使用SNMP与设备进行交互。 南行插件可帮助充当SNMP管理器的应用程序与充当代理的设备进行交互。 SNMP插件包括:SNMPv1,SNMPv2,SNMPv3支持,作为RPC调用的简单API,使应用程序能够执行以下功能的API:GetRequest,SetRequest,GetNextRequest,GetBulkRequest,Trap支持,InformRequest。 SNMP使用MIB与网络设备进行交互。 MIB的添加包括获取与MIB对应的.my和.oid文件。 在与SNMP插件一起使用之前,将MIB文件转换为YANG模型。 名为“ smidump”的工具有助于将MIB转换为YANG模型。 通过执行以下命令来安装SNMP插件:

feature:install odl-SNMP-plugin

我们使用了两个北向API,即SNMP GET和SNMP SET。 它们具有以下字段Ipaddress,oid,get-type,community。 使用这些北向API的http请求URI的格式如下:

http://localhost:8181/restconf/operation/snmp:snmp-get
http://localhost:8181/restconf/operation/snmp:snmp-set

C. RestConf插件:

在OpendDaylight控制器中,Restconf被打包到Karaf捆绑软件/功能中。 下载ODL软件包后,必须手动安装。

API资源包含RESTCONF功能的访问点和状态。 可以通过URI“ / restconf”访问它。 Restconf在端口8181上侦听HTTP请求。 Restconf启用控制器中的数据存储。 有两个数据存储:

  1. config - contains data inserted via controller
  2. operational - contains other data

这表示操作数据存储。 它包含将由客户端检索的统计数据和操作数据资源。 客户端无法创建或删除它。

请求和响应数据可以采用JSON或XML格式。 请求数据(输入)的媒体类型是通过HTTP标头中的“ Content-Type”字段设置的。 响应数据(输出)的媒体类型在HTTP标头的“接受”字段中设置。

应用方法

该应用程序用于监视网络并获取设备的实时数据。 该应用程序是使用python使用以下库编写的,其中使用了以下库:httplib2,json,sys,os,crypt,getpass,OrderedDict。在运行该应用程序时,它将对用户进行身份验证并向所选用户提供操作,获取拓扑,获取链接统计信息, 获取系统统计信息,使用SNMP-GET,使用SNMP-SET,实时监控,退出。

A. 获取拓扑,获取链路信息

使用的插件-RESTCONF,OpenFlow。 这些操作将调用topology(),linkStats()方法,这些方法将HTTP请求发送到RESTCONF接口,并从OpenDaylight控制器的数据存储中获取数据,并发送带有JSON数据的响应。 解析此JSON内容以获得拓扑信息,该拓扑信息又呈现给用户。

B. 获取系统数据

使用的插件-RESTCONF,SNMP。 此操作将从用户获取IP地址,并获取网络中相应主机的系统统计信息。 该方法将HTTP请求发送到RESTCONF接口。 SNMP-GET请求被发送到相应的设备以提取数据。 此数据存储在ODL控制器的数据存储中。 HTTP响应与JSON数据一起发送到应用程序。 解析此JSON内容以获取系统统计信息,例如系统描述,CPU使用率,内存使用率,磁盘使用率。

C.使用SNMP-GET:

使用的插件-RESTCONF,SNMP。此操作将从用户获取IP地址,OID,获取类型和社区,并获取网络中相应主机的系统统计信息。此方法将HTTP POST请求发送到RESTCONF接口。 SNMPGET请求被发送到相应的设备以提取数据。此数据存储在ODL控制器的数据存储中。 HTTP响应与JSON数据一起发送到应用程序。解析此JSON内容,以向用户提供所请求OID的值。

D.使用SNMP-SET:

使用的插件-RESTCONF,SNMP。此操作将获取IP地址,OID,社区和为网络中相应主机设置的值。此方法将HTTP POST请求发送到RESTCONF接口。 SNMP-SET请求发送到相应的设备,以更改相应的OID的数据。

E.实时监控:

在我们的应用程序中,我们正在对旧设备和OpenFlow设备进行实时监控。

a. 监视旧版设备:

通过此操作,我们可以了解旧版设备的通信和统计信息。有两个主要函数,分别是snmp()和trap()。第一个使用“tcpdump”并监听端口161以获取所有通信数据。第二个侦听端口162,并使用“tcpdump”转储所有陷阱消息。默认情况下,这两种方法以pcap文件的形式存储数据,可用于分析数据包。

b. 监视OpenFlow设备:

运行应用程序时,默认情况下会执行此操作。 这有助于监视OpenFlow交换机。 在运行应用程序时,它将获取使用方法topo()的拓扑详细信息。 然后,它执行方法checkTopo()以获得拓扑中存在的许多节点和链接的详细信息。 此方法在永远循环中运行,以获取链接和节点详细信息。 trackLinksUp()和trackNodesUp()分别用于查找任何新添加的链接和节点。 trackLinksDown()和trackNodesDown()用于分别找出任何已删除的已添加链接和节点

结果和评估

为了测试管理系统的设计和实现,我们使用了OpenDaylights SNMP插件。 我们的应用程序基础结构包括运行OpenDayLight控制器的Ubuntu VM,用于将不同节点连接到控制器的集线器,一个旧版Cisco c3600路由器,两个OpenVswitch管理Docker容器以及五个Ubuntu Docker容器。 我们利用Internet Docker容器在系统中启用DHCP IP寻址方案,并在Ubuntu Dockers中更新其他存储库以及SNMP守护程序。 拓扑如图所示,其中OpenVswitch的eth0接口充当管理接口,负责通过集线器与控制器进行通信。

主要是这个论文直接在github找代码看到的,然后想试试看里面的简单拓扑是如何搭建以及用了什么平台跑的。

SDN-based Network Management Solution的更多相关文章

  1. Improving Network Management with Software Defined Networking

    Name of article:Improving Network Management with  Software Defined Networking Origin of the article ...

  2. MySQL vs. MongoDB: Choosing a Data Management Solution

    原文地址:http://www.javacodegeeks.com/2015/07/mysql-vs-mongodb.html 1. Introduction It would be fair to ...

  3. Network management system scheduling for low power and lossy networks

    In one embodiment, a network management system (NMS) determines an intent to initialize a request-re ...

  4. Simple Network Management Protocol - SNMP Tutorial

    30.9 Simple Network Management Protocol Network management protocols specify communication between t ...

  5. SNMP: Simple? Network Management Protocol(转)

    转自:http://www.rane.com/note161.html An SNMP Overview The Message Format The Actual Bytes Introductio ...

  6. Connecting Docker for Cloud Services using SDN and Network Virtualization

     Abstract The explosive scale of container CPUs needs highly efficient network virtualization Chal ...

  7. Netstat Commands for Linux Network Management

    netstat (network statistics) is a command line tool for monitoring network connections both incoming ...

  8. SNMP–Simple Network Management Protocol

    I am planning to write an introduction and simple implementation of SNMP in software, when my work w ...

  9. Linux Network Management

    Linux网络管理 (YouTube视频教程) ISO/OSI七层模型 ISO: The International Organization for Standardization 国际标准化组织 ...

随机推荐

  1. Google 浏览器保存mht网页文件(单个网页)的方法(无需插件)

    1.找到设置打开单个网页保存的地方 在google浏览器地址栏输入:chrome://flags”,回车 2.实现保存单个网页 打开你要保存的网页后,只需 Ctrl+s ,搞定!如下: 假设找到了一篇 ...

  2. MySQL NULL--三值逻辑(Three Value Logic)

    三值逻辑(Three Value Logic) 在关系型数据库中,由于NULL值的存在,导致逻辑表达式存在三种值:TRUE/FALSE/UNKNOW. SELECT '=NULL AS C1, ' A ...

  3. C 语言快速入门,21 个小项目足矣!「不走弯路就是捷径」

    C 语言作为大学理工科专业的必修,是很多同学走进编程世界的第一课.那么怎样才能更好的入门 C 语言呢? 下面整理了 21 个 C 语言练手项目,从基础语法开始,逐步深入,通过一个个练手项目,让你轻松驰 ...

  4. Cloudera Certified Associate Administrator案例之Troubleshoot篇

    Cloudera Certified Associate Administrator案例之Troubleshoot篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.调整日志的进 ...

  5. Cloudera Certified Associate Administrator案例之Install篇

    Cloudera Certified Associate Administrator案例之Install篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建主机模板(为了给主 ...

  6. 解决windows下合上、掀开笔记本盖子后屏幕黑屏的问题

    我在macbook上安装了windows10,但是由于驱动问题,虽然我设置的是关闭盖子仅息屏,但是在关闭盖子后一段时间,再掀开,屏幕就怎么样都唤不醒了. 我找到一个方法,虽然治标不治本,但是起码能解决 ...

  7. C++(四十八) — string容器的基本操作

    参考博客:https://blog.csdn.net/qq_37941471/article/details/82107077 https://www.cnblogs.com/danielStudy/ ...

  8. Kotlin反射实践操作详解

    继续对反射进行实战. 获取构造方法: 先定义一个主构造方法,2个次构造方法,接下来咱们用反射来获取一下构造方法: 其结果: [fun <init>(kotlin.Int, kotlin.S ...

  9. spring的面试题

    什么是spring? spring是一个开源框架,为简化企业级应用开发而生.Spring可以是使简单的javaBean实现以前只有EJB才能实现的功能.Spring是一个IOC和AOP容器框架. Sp ...

  10. python开发应用-本地数据获取方法

    文件的打开.读写和关闭 文件的打开: file_obj=open(filename,mode='r',buffering=-1,...) filename是强制参数 mode是可选参数,默认值是r b ...