博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FlowVisor入门教程
阅读量:6375 次
发布时间:2019-06-23

本文共 2880 字,大约阅读时间需要 9 分钟。

  hot3.png

FlowVisor是建立在OpenFlow之上的网络虚拟化工具,它可以将物理网络划分成多个逻辑网络,从而实现虚网划分。它为管理员提供了通过定义流规则,而不是调整路由器和交换机配置的方式来管理网络。正如管理程序依赖于标准x86指令来虚拟化服务器一样,FlowVisor使用标准OpenFlow指令集来管理OpenFlow交换机,这些指令设置了低级别规则,比如如何基于数据包表头中的特点来转发数据包。

1 工作原理

作为一个网络虚拟化平台,FlowVisor部署在标准OpenFlow控制器和OpenFlow交换机之间,成为二者的透明代理。FlowVisor能够与多个控制器连接使得每个控制器控制一个虚网,保证各虚网相互隔离。

FlowVisor的设计有如下几个原则:(a) FlowVisor对控制器和交换机而言是透明的,它们都感知不到FlowVisor的存在;(b)各个虚网之间是隔离的,即使在广播条件下各个虚网的流量也必须实现隔离;(c)虚网划分策略是丰富且可扩展的,由于当前网络虚拟化的技术还不成熟,因此划分虚网的策略需要是灵活的、模块化的且可扩展的。

目前虚网划分范围涵盖了物理层、数据链路层、网络层和传输层的协议字段,以数据包的12元组作为划分依据,按照流的思想将网络资源进行合理分配,以达到限定当前切片内数据流量类型的目的。一般对于某个特殊的应用,可以通过指定源/目的IP地址、源/目的MAC地址或者TCP端口信息来把数据包划分到一个切片内。

FlowVisor是一个特殊的OpenFlow控制器,所有OpenFlow消息都将透过FlowVisor进行传送。FlowVisor会根据配置策略对OpenFlow消息进行拦截、修改、转发等操作。这样,OpenFlow控制器就只控制其被允许控制的流,并不知道其所管理的网络被FlowVisor进行过分片操作。相似地,从交换机发出的消息经过FlowVisor也只会被发送到相应的控制器。

FlowVisor主要由FVClassifier、FVSlicer和FlowSpace数据库三部分组成。FVClassifier用于维护与物理OpenFlow交换设备的连接,处理IO请求并记录每个物理设备的端口、性能等信息,每个FVClassifier对应一个OpenFlow交换设备。FVSlicer用于维护与控制器的连接,管理OpenFlow会话并对控制器下发的信令进行处理。当流从一个物理的OpenFlow交换设备到达FlowSpace后,FlowSpace根据数据库中切片规则,把OF消息交给本切片内的FVSlicer发送给连接的控制器。

140656_rCLl_2249260.png

图 1. FlowVisor工作原理

FlowVisor的核心主要是对上行消息的映射和对下行信令的过滤。如图1所示,控制器和交换机与FlowVisor的所有联系都通过Poll Loop来交互,交换机交给控制器的数据包通过FlowVisor的OFSwitchAcceptor模块接收后,FVClassifier对数据包的来源进行分析,再连接到FlowVisor中的数据库与Flowspace进行匹配,从而决定此数据包应该交由哪个控制器来处理。同理,控制器下发给交换机的数据包会通过相反的过程到达交换机。

2 安装配置

下面介绍如何在通用的Linux或者FreeBSD主机上构建和安装FlowVisor。以Ubuntu14.04系统下构建安装FlowVisor1.2为例,步骤如下:

第一步:源码下载,采用git的方式进行源码下载,下载FlowVisor-1.2-MAINT.zip安装包。

140656_0XQ7_2249260.png

第二步:依赖包安装,需要安装ant和jdk,jdk要求使用jdk1.6版本或其以下版本,否则会发生错误。

140657_uwLS_2249260.png

第三步:编译,解压FlowVisor-1.2-MAINT.zip包后进行编译,成功后可以看到“BUILD SUCCESSFUL”提示。

140657_db7h_2249260.png

第四步:安装,安装时使用默认路径,并输入用户名、用户组和密码,用户名是ubuntu的用户名。

140657_FNqN_2249260.png

FlowVisor安装完成后,它的配置文件位于/etc/flowvisor/config.json。配置文件中包括简单的Slice、FlowSpaceRule样例,以及FlowVisor的监听端口、日志等级、版本等信息。api_webserver_port是xml请求的监听端口,默认为8080; api_jetty_webserver_port是JSON请求的监听端口;listen_port是交换机的监听端口,默认为6633。参数配置如下所示:

140658_VDl2_2249260.png

图 2. FlowVisor参数配置

FlowVisor配置完成后,系统切换到FlowVisor用户下,即在上一步安装中输入的用户名,然后运行FlowVisor,命令如下:

140658_Uv20_2249260.png

3 常用命令

FlowVisor中常用的命令如表1所示:

表 1. FlowVisor常用命令

140659_K6My_2249260.png

140659_kZzl_2249260.png

4 一个简单实例

软件环境准备:

在Ubuntu14.04LTS下搭建本实例所需的软件环境,安装软件如表2所示。其中基本软件环境镜像可以在sdnlab资源库中下载mininet-2.1.0p2-140718-ubuntu-14.04-server-amd64-ovf(包括Ubuntu14.04及安装好的mininet),链接为http://pan.baidu.com/s/1sjG0fXN。

表 2. 所需软件

140700_8iZW_2249260.png

相关端口配置:

表 3. 端口配置

140700_NYVl_2249260.png

网络拓扑配置:

140700_a31W_2249260.png

图 3. 实例拓扑图

实验流程:

第一步,启动FloodLight,FlowVisor。

140701_rJ9M_2249260.png

第二步,启动Mininet构建物理拓扑,包括1个交换机,2个主机,设置远程控制器为FlowVisor(127.0.0.1,6633)。

140701_tAZH_2249260.png

执行结果如下:

140701_Yuig_2249260.png

第三步,在FlowVisor上创建slice,指定FloodLight控制器(127.0.0.1:6634);然后添加两条基于端口划分的flowspace。

140701_lmZA_2249260.png

第四步,测试

在Mininet下进行主机ping操作。

140705_fTmk_2249260.png

执行结果如下,主机h1与h2可通信:

140706_nDO5_2249260.png

在FlowVisor下停止slice 。

140706_H90o_2249260.png

在Mininet下再次验证h1与h2是否可通信。

140706_iICz_2249260.png

执行结果如下,主机h1与h2不可通信:

140706_Jlvk_2249260.png

5 总结

通过本文的阐述及实践,我们了解了FlowVisor的基本概念及工作原理。综合使用FlowVisor、FloodLight和Mininet,构建了一个基本SDN运行实例,通过本实例加强了对SDN组成原理的理解,提高了对FlowVisor的工作原理和使用方法的认知程度。希望以后可以为大家提供更多的实例,大家有想法也可以进一步交流。

本文来源于,可点击此。如果您对本文感兴趣,可参与以下互动方式与作者近距离交流。

162518_SYuP_2249260.png

 微信(账号SDNLAB)

           162542_9VAk_2249260.png

 QQ群

SDN研究群(214146842)

OpenDaylight研究群(194240432)

转载于:https://my.oschina.net/sdnlab/blog/343513

你可能感兴趣的文章
利用MapReduce计算平均数
查看>>
scala-05-map映射
查看>>
Spring Boot - how to configure port
查看>>
右键添加复制路径选项
查看>>
DocFetcher 本机文件搜索工具
查看>>
ambassador 学习三 限速处理
查看>>
HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
查看>>
家里蹲大学数学杂志期刊模式目录
查看>>
数据结构:最小生成树--Kruskal算法
查看>>
Swift_1_基本数据类型
查看>>
POJ 1849 Two(遍历树)
查看>>
Recurrent Neural Network[CTC]
查看>>
VS注释与取消注释快捷键
查看>>
深入解析Vuex实战总结
查看>>
.NET编译项目时出现《此实现不是 Windows 平台 FIPS 验证的加密算法的一部分》处理方法...
查看>>
流水落花春去也
查看>>
从.NET中委托写法的演变谈开去(下):性能相关
查看>>
C# 多人聊天程序
查看>>
【教训】为什么不作备份?!
查看>>
网搜索引擎架构设计
查看>>