OpenStack环境中的NFV实践
原文链接: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实践的更多相关文章
- 在openstack环境中安装rackspace private cloud --1 环境准备
在一个openstack环境中安装rackspace private cloud, 环境准备: 在good-net网络中创建3个虚拟机vm Network Detail: good-net Netwo ...
- Docker在云环境中的应用实践初探:优势、局限性与效能评测
作者 商之狄 发布于 2014年11月10日 本文依据笔者所在团队的一些近期开发和应用的实践,整理出一些有意义的信息,拿出来和社区分享.其中既包括在云端应用Docker与相关技术的讨论,同时也有实施过 ...
- Dubbo Mesh 在闲鱼生产环境中的落地实践
本文作者至简曾在 2018 QCon 上海站以<Service Mesh 的本质.价值和应用探索>为题做了一次分享,其中谈到了 Dubbo Mesh 的整体发展思路是“借力开源.反哺开源” ...
- 管理openstack多region介绍与实践
转:http://www.cnblogs.com/zhoumingang/p/5514853.html 概念介绍 所谓openstack多region,就是多套openstack共享一个keyston ...
- openstack多region介绍与实践---转
概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人 ...
- openstack多region介绍与实践
版权声明:本文为原创文章,转载请注明出处. 概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以 ...
- 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中
摘要:OpenStack与Hadoop被誉为继Linux之后最有可能获得巨大成功的开源项目.这二者如何结合成为更猛的新方案?业内给出两种答案:Hadoop跑在OpenStack上或OpenStack部 ...
- React 与 Redux 在生产环境中的实践总结
React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...
- 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
随机推荐
- HTTP 协议基础
HTTP 协议的主要特点可概括如下: 1.支持客户/服务器模式. 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST.每种方法规定了客户与服务器联 ...
- 想取得刚才nextval()的值时,放心大胆的用currval()吧,currval()的返回值并不会因为nextval()的并发访问而混乱
以前写sql的时候总是担心current()得到的值并不会绝对等于我上一次nextval()取得的值;因为可能其他线程并发访问nextval(). 先说结论吧:当你拿到一个数据库连接,先nextval ...
- getParameter和getAttribute有什么区别
1.getAttribute是取得jsp中 用setAttribute設定的attribute 2.parameter得到的是string:attribute得到的是object 3.request. ...
- react-navigation 3.x版本的push、navigate、goback、pop、dispatch等常用方法
一.方法简介 1. 应用中的每个页面组件都会自动提供 this.props.navigation this.props.navigation可以获取的一些方法: navigate - 转到另一个页面, ...
- Golang之实现(链表)
链表算法 package main import "fmt" type LinkNode struct { data interface{} next *LinkNode } ty ...
- JAVA array,map 转 json 字符串
public class User { private String username; private String password; public String getUsername() { ...
- Zookeeper基本使用(转)
一.Zookeeper架构 云计算越来越流行的今天,单一机器处理能力已经不能满足我们的需求,不得不采用大量的服务集群.服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,这些信 ...
- 【分享】Java后台开发精选知识图谱
地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...
- HDU 6214 Smallest Minimum Cut (最小割且边数最少)
题意:给定上一个有向图,求 s - t 的最小割且边数最少. 析:设边的容量是w,边数为m,只要把每边打容量变成 w * (m+1) + 1,然后跑一个最大流,最大流%(m+1),就是答案. 代码如下 ...
- FCLK、HCLK、PCLK
一,PLL S3C2440 CPU主频可达400MHz,开发板上的外接晶振为12M,通过时钟控制逻辑的PLL(phase locked loop,锁相环电路)来倍频这个系统时钟.2440有两个P ...