原文链接:http://www.99cloud.net/html/2016/jiuzhouyuanchuang_1103/250.html

在开始实践之前我们首先需要了解一些NFV概念和术语。

NFV 和NFV MANO架构的概念

NFV(Network Function Virtualization)
引用维基百科的定义:Network functions virtualization (NFV) is a network architecture concept that uses the technologies of IT virtualization to virtualize entire classes of network node functions into building blocks that may connect, or chain together, to create communication services.

网络功能虚拟化(NFV)是一种网络架构概念,其使用IT虚拟化技术将整个类别的网络节点功能虚拟化为可连接或链接在一起以创建通信服务的构建块。

NFV MANO(NFV Management and Orchestration)
NFV MANO是ETSI(European Telecommunications Standards Institute)定义的一个NFV架构。

NFV MANO架构主要包括三个部分:
•NFV Orchestrator(NFV编排器)
•VNF Manager(VNF管理器)
•Virtualized Infrastructure Manager (虚拟基础设施管理器)
下面是NFV MANO架构图

NFV MANO 是图上天蓝色框内的部分,其中三个主要功能块NFVO,VNFM,VIM互相连接,因为这是一个设计架构图,把连接称为reference point,在具体实现中这些连接就是功能块之间的API接口。
图上左边的部分从下往上看,最下面是NFVI,往上是VNF实例,再往上连接着网络运营商传统的EMS(Element Management System)网元管理系统和OSS/BSS(Operations support system/business support system)运营支撑系统/业务支撑系统,可以看到MANO架构中的VNFM和NFVO也分别和这两个系统有接口。

下面是图上一些模块的解释
NFVI(NFV Infrastructure)
NFVI包括NFV底层物理的服务器,存储,网络设备,以及虚拟化后的虚拟机,虚拟存储,虚拟网络资源。

VNFD(VNF Descriptor)
VNFD就是一个VNF的部署模板,包含了一个VNF自身的所有信息。图上的VNF Catalog,就是所有VNFD的目录。

VIM(Virtualized Infrastructure Manager)
VIM通常是一个云平台,管理一个域下的NFVI,在一个NFV架构下可能有多个NFVI,每个NFVI都有一个对应的VIM来管理。在我们的环境中,VIM的实现就是OpenStack。

VNFM(VNF Manager)
VNFM主要管理VNF的生命周期,负责包括调用VIM,根据VNFD(VNF Descriptor)创建,维护,终结VNF,VNF监控,VNF的self-healing,扩容缩容。VNFM可能有多个。

NFVO(NFV Orchestrator)
我们知道可能有多个VIM管理多个域的NFVI,也可能有多个NFVM分别管理它们的VNF。所以在上层还需要一个能协调管理这些资源和服务的东西,就是NFVO。

对于NFVI的资源,NFVO需要与多个VIM的接口交互,协调,认证,分配,释放这些资源。对于VNF的服务,NFVO需要:
1、与多个VNFM的接口交互,分别创建这些VNF。
2、创建完VNF后,还要管理VNF的拓扑,对这些VNF进行编排,也就是实现VNFFG(VNF Forwarding Graph),也就是SFC(Service Function Chain)。

OpenStack环境中的NFV实践

看过了上面这些概念,应该会对NFV的架构有一些了解,接下来就通过在OpenStack环境中的一个实验来体验一下NFV的这些概念和设计应该如何实现。

后文会有一个演示视频,用OpenStack作为VIM,用Heat作为VNFM,Heat的template作为VNFD,用shell脚本调用Heat,创建一个租户内的防火墙。

演示的防火墙的镜像使用了Hillstone云界虚拟防火墙,云界是Hillstone在OpenStack云环境下的网络安全解决方案,可以给租户网络提供高可用的路由,VPN,QoS,端口映射,入侵检测,病毒防护等功能。

Heat是什么
Heat是OpenStack的编排项目,目标是在OpenStack云上编排应用,管理应用和基础设施的整个生命周期。
Heat用模板文件来描述应用的基础设施(比如虚拟机,网络,云硬盘等)。

网络拓扑
虚拟防火墙在OpenStack中的网络拓扑图:

手动在租户中部署虚拟防火墙,需要做:
1、上传镜像
2、创建网络:防火墙的管理网络,HA网络,外部网络,内部网络
3、启动两个防火墙实例
4、关闭各个端口的安全组
5、用防火墙的管理接口配置HA,接口地址,安全规则,SNAT,DNAT等业务

可以看到手动部署这样一个环境的工作量其实不小,所以需要Heat。

用Heat编排虚拟防火墙
有了Heat,我们只需要写好VNF的模板,用模板创建Heat stack,就可以一键创建防火墙的整个拓扑。
这次演示会创建两个stack:
1、hillstone stack,负责创建防火墙的网络,端口,虚拟机。
2、rest_client stack,会首先创建一个centos7虚拟机作为客户端向防火墙发送restful请求配置防火墙,然后在内部网络上创建一个cirros虚拟机在最后用来验证防火墙功能。

详细的流程可以参考下图:

1、创建hillstone stack,包括网络,端口,两个防火墙虚拟机
2、hillstone stack创建完成后,输出两个hillstone虚拟机的ip地址
3、通过shell脚本的方式,读取第一个stack的output,并以此为参数创建rest_client stack,这个stack会在防火墙管理网络上创建一个centos7虚拟机并传入userdata脚本,同时在内网创建一个cirros虚拟机(cirros的网关设在防火墙上)
4、rest_client启动后会运行userdata脚本,向两个防火墙发送请求,进行初始化配置
5、最后,手动登录cirros虚拟机ping外网,进行HA切换,验证防火墙功能

演示视频
下面是演示的视频:

和MANO架构的距离

要实现MANO架构还需要做:
•开放的API接口
•多VIM支持
•VNFM:兼容不同类型的VNF,VNF监控,self-healing,auto-scaling,标准化的VNF模板
•NFVO:多VIM资源的协调,VNF的编排,VNFFG/SFC
•……………

可以看到要做好这个不是一个小工程,在NFV/SDN被OpenStack开发者和用户密切关注的背景下, OpenStack社区项目tacker应运而生。

Tacker是OpenStack的NFV编排项目,主要目标是实现MANO架构,可以说是未来NFV的一个方向,很有潜力的一个项目,我们公司的大师兄龚永生也在tacker上有一定投入,是tacker项目的core。

总结
上文描述了NFV MANO架构的一些概念和一个简单的演示,后续我会探索tacker,尝试把hillstone云界作为VNF放到tacker中,希望读者看完本文能有所收获。

OpenStack环境中的NFV实践的更多相关文章

  1. 在openstack环境中安装rackspace private cloud --1 环境准备

    在一个openstack环境中安装rackspace private cloud, 环境准备: 在good-net网络中创建3个虚拟机vm Network Detail: good-net Netwo ...

  2. Docker在云环境中的应用实践初探:优势、局限性与效能评测

    作者 商之狄 发布于 2014年11月10日 本文依据笔者所在团队的一些近期开发和应用的实践,整理出一些有意义的信息,拿出来和社区分享.其中既包括在云端应用Docker与相关技术的讨论,同时也有实施过 ...

  3. Dubbo Mesh 在闲鱼生产环境中的落地实践

    本文作者至简曾在 2018 QCon 上海站以<Service Mesh 的本质.价值和应用探索>为题做了一次分享,其中谈到了 Dubbo Mesh 的整体发展思路是“借力开源.反哺开源” ...

  4. 管理openstack多region介绍与实践

    转:http://www.cnblogs.com/zhoumingang/p/5514853.html 概念介绍 所谓openstack多region,就是多套openstack共享一个keyston ...

  5. openstack多region介绍与实践---转

    概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人 ...

  6. openstack多region介绍与实践

    版权声明:本文为原创文章,转载请注明出处. 概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以 ...

  7. 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中

    摘要:OpenStack与Hadoop被誉为继Linux之后最有可能获得巨大成功的开源项目.这二者如何结合成为更猛的新方案?业内给出两种答案:Hadoop跑在OpenStack上或OpenStack部 ...

  8. React 与 Redux 在生产环境中的实践总结

    React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...

  9. 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

随机推荐

  1. ADO.Net学习总结

    一.讲述6个ADO.NET中的常用对象: Connection对象Command对象DataReader对象DataAdapter对象DataSet对象DataTable对象DataRow对象Data ...

  2. Elastic Search的学习

    那些必须要知道的事儿 自然语言处理 自然语言处理之中文分词器 什么是Apache Lucene 什么是elasticsearch 搭建elasticsearch环境 Windows下 Java环境配置 ...

  3. Spring NamedParameterJdbcTemplate 详解

    转自: https://zmx.iteye.com/blog/373736 NamedParameterJdbcTemplate类是基于JdbcTemplate类,并对它进行了封装从而支持命名参数特性 ...

  4. delphi XE8 NetHTTPRequest NetHTTPClient

    delphi xe8 推出2个新http控件,NetHTTPRequest.NetHTTPClient 可以调用ASP.Net 一般应用程序获取网页数据,用旧的控件idhttp控件也可以,推荐用新的这 ...

  5. 迷你MVVM框架 avalonjs 学习教程2、模块化、ViewModel、作用域

    一个项目是由许多人分工写的,因此必须要合理地拆散,于是有了模块化.体现在工作上,PM通常它这为某某版块,某某频道,某某页面.某一个模块,必须是包含其固有的数据,样式,HTML与处理逻辑.在jQuery ...

  6. Centos7手动编译安装Python3

    Python3的安装方式非常的简单,首先去到Python下载目录下载想要的Python包,这里我选择了3.6.5版本 $ wget https://www.python.org/ftp/python/ ...

  7. Qt Thread

    Threading Classes (Qt help manual key words) These Qt Core classes provide threading support to appl ...

  8. Pwdump v7.1

    提取windows系统密码  和 hash值

  9. Mybatis 实用篇(三)参数处理

    Mybatis 实用篇(三)参数处理 sql 语句中的参数 parameterType 可以省略不写. 一.参数封装 1.1 单个参数处理 public interface UserMapper { ...

  10. AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)(转)

    出处:http://www.bubuko.com/infodetail-827612.html AspNet.WebAPI.OData.ODataPQ 这是针对 Asp.net WebAPI ODat ...