原文链接: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. 679. 24 Game

    ▶ 给出四个整数,求他们是否能加减乘除括号拼凑成 24 ● 代码,11 ms,正向枚举,推广性很强(nums 可以改为任意长度,也不限于拼凑 24 这个和),缺点是只能判定是否有解,不方便输出不重复的 ...

  2. 7.25 7figting!

    TEXT 82 Proton 马来西亚宝腾汽车 A fork in the road 何去何从?(陈继龙编译) Nov 30th 2006 | HONG KONG From The Economist ...

  3. node升级更新最近稳定版

    今天,又发现一个超级简单的升级Node.js的方法.一行命令搞定,省去了重新编译安装的过程. node有一个模块叫n(这名字可够短的...),是专门用来管理node.js的版本的. 首先安装n模块: ...

  4. 转)GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以”为所欲为”, ...

  5. ajax传递数组及后台接收

    ajax传递的是{"items":arr},其中arr=[]; 在后台String[] items=req.getParameterValues("items" ...

  6. Master节点部署

    一.部署Kubernetes API服务部署 准备安装包 [root@linux-node1 ~]# cd /usr/local/src/kubernetes [root@linux-node1 ku ...

  7. 如何安装JDeveloper

    1>下载jdk和JDeveloper jdk版本:jdk-7u65-windows-x64.EXE JDeveloper版本:jdev_suite_12.3_win64_V44419-01.is ...

  8. Golang作用域—坑

    先举个栗子,全局作用域变量,与 := 符号声明赋值新变量 package main import "fmt" var a = "GG" func main() ...

  9. Redhat安装python环境(readline模块)

    多次尝试,发现linux下安装软件: yum install readline-devel readline patch yum update python -y # 这步很重要,修复了报错 pip3 ...

  10. idea中处理异常的快捷键

    alt+Enter