searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OpenStack tacker初窥

2023-11-27 02:50:51
77
0
Tacker是基于NFV标准组织ESTI的MANO架构来实现通用的 NFV编排和VNF管理需求的一个OpenStack服务,ESTI MANO中的缩写MANO是指NFV的MANagement and Orchestration.
 

总体架构

 

工作流程

  1. Tacker 根据BSS/OSS需求从右侧的服务目录(VNFD catalog)中选出相应的服务项目,如vRouter。
  2. Tacker 把具体的 VNFD推送给左侧的OpenStack Heat 来创建VDU单元(Virtual Deployment Unit,对应含VNF要求的 VM部署单元)。
  3. 用Heat来启动生成具体的VM实例,如图下方的 VNF FWaaS,VNF vRouter等。
  4. (在图中部)用 Mgmt Driver (管理驱动)来配置 VMs,通常会通过厂商EMS(如大家看到的 "Vendor Y Manager"),或者是SSH这样的简单手段。
  5. SFC (Service Function Chain 服务功能链)的执行实现。这里例子用的是ODL 控制器,配合IETF的NSH(Network Service Header,网络服务包头)来实现服务链的执行。 NSH通过描述数据面的Header来沿着网络服务路径(Service Path)承载网络服务信息,意在实现与传输独立的“服务面”(Service Plane),可以与VXLAN,MPLS, UDP等传输封装协议配合。在NSH当前开源实现中可以支持OVS数据面(VXLAN)和ODL的控制面。
  6. 监控VNF健康/可用性availability状况,出现问题是自动治愈回复(重新生成VNF,保证业务连续性)。在之前提到的OpenStack东京峰会Demo Theater,Tacker 项目core team做过演示,用ping做基本监控,然后模拟failure (通过blocking ICMP),Tacker自动检测到,然后重建恢复VNF功能。
 
 

模块分析

一、VIM(Virtual Infrastructure Management)
VIM是负责对网络功能虚拟基础设施(NFVI)进行管理和控制,包括其中的计算、存储和网络资源。NFVO通过keystone直接对VIM进行编排管理。VIM的配置文件如下:
edit the vim-admin.yaml:
auth_url: '//controller/identity/v3'
username: 'username-admin'
password: 'Vn_tacker'
project_name: 'projectname-admin'
project_domain_name: 'Default'
user_domain_name: 'Default'
这里的VIM给用户创建一个资源管理的空间,继而可以在这个资源空间上配置自己的网络。
该模块可以直接对neutron的服务进行调用,主要是将底层的资源进行整合,为上层的编排和管理请求提供支持。
1.1 一个VIM的创建流程如下:
1.         用户请求创建VIM,通过tacker extension api发送创建VIM请求到NfvoPlugin;
2.         NfvoPlugin检查VIM名称是否存在,将VIM状态置为PENDING;调用driver的register_vim方法,验证并注册VIM;
3.         然后交给父类DB处理,调用_validate_default_vim,确保只存在一个default VIM 。NfvoPluginDb在两张表中创建记录;
4.         通过commonService在DB中创建create event,并随后将VIM状态修改为REGISTERING;
5.         调用monitor_vim更新VIM状态:
a)         调用driver的vim_status方法,检查VIM的健康状态,若可以PING通,则返回True,否则,返回False;
b)         根据健康检查的返回值,将VIM状态通过update_vim_status方法更新为REACHABLE/UNREACHABLE;
c)         修改数据库信息。
6.         向用户返回结果。
 
1.2 一个VIM的删除
 
1.3 一个VIM的更新
 
 
VNFD(Virtual Network Function Descriptor)
VNFD(VNF描述符)是使用TOSCA YAML文件创建的模板,用于创建VNF时使用。该模板中某些变量可以通过参数名进行定义,在创建VNF时,传入参数文件,就可以实现拥有不同参数配置的VNF。
VNFD TOSCA模板文件包括四个一级目录:
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
 
description: Demo example with key_name
 
metadata:
     template_name: sample-tosca-vnfd-keyname
 
topology_template:
...
 topoligy_template包含三个二级目录:
inputs:(可选,用于定义参数名,在node_templates中使用,创建vnf时可传参)
  ...
  node_templates:(必选,定义VDUs,CPs,VLs)
  ...
  policies:(可选,用于定义monitor或者scale策略)
  ...
 
1.1 创建VNFD流程
  1. 用户请求创建VNFD。
  2. 通过tacker extension api发送创建路由请求到VNFMPlugin。
  3. VNFMPlugin进行一些合法检查,然后丢给父类DB处理。
    1. vnfd模板是否是字典类型
    2. 模板是否合法
    3. VNFD名字在DB中是否已经存在
    4. 是否包含service_types数据
    5. 从模板中提取必要的信息
  4. VNFMPluginDB在三张表中创建记录,然后通过commonService在DB中创建event。
  5. 向用户返回结果
 
1.2 删除VNFD
 
1.3 更新VNFD
 

VNF(Virtual Network Function)

VNF是网元,对应openstack中的虚机。通过VNFD中创建的模板来创建和配置虚机。
 
1.1 创建VNF流程
  1. 用户请求创建VNF。
  2. 通过tacker extension api发送创建路由请求到VNFMPlugin。
  3. VNFMPlugin进行一些合法检查。
  4. 调VNFMPluginDB接口在VNF,VNF_attribute,EVENT里创建记录。此时VNF状态为PENDING_CREATE。
  5. 调mgmt_driver的create_pre。(目前实现为空)
  6. 如果VNF配置了alarming_policy,为VNF添加alarm url(ceilmeter端口)。
  7. 调infra_driver(OpenStack) create接口创建VNF(虚机)。OpenStack driver将tosca模板转换后通过heatclient向openstack VIM发送创建请求。
  8. 创建个eventlet线程 进行如下处理:
  9. 调infra_driver的create_wait接口去轮询虚机状态,默认查询60次,每次间隔5秒。
  10. 更新虚机状态,创建EVENT。如果成功,虚机状态为ACTIVE,否则为ERROR。
  11. 调mgmt_driver的create_post。(目前实现为空)
  12. 调mgmt_driver的mgmt_call,执行action: create_vnf,对虚机进行配置。
  13. 如果VNF配置了monitoring_policy,将VNF加入监控列表中。
  14. 在等待VNF创建完成后(默认30s),进行更新VNF(见后面章节)。
  15. 向用户返回结果
 
1.2 删除VNF
 
1.3 更新VNF
 
1.4 VNF状态图
  1. 创建、更新、删除、扩容时,先标记为PENDING_xxx状态,如果失败,都会标记为ERROR状态。
  2. 如果创建、更新、扩容成功,会变为ACTIVE状态。如果删除成功,会记录deleted_at时间,不能再被查询到。
  3. 如果配置了Monitor,根据ping/_ping结果和相应的策略,可能标记为DEAD状态。
  4. 被标记为ERROR和DEAD状态的VNF只能被删除,不能重新变成ACTIVE状态。
 
0条评论
作者已关闭评论
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
原创

OpenStack tacker初窥

2023-11-27 02:50:51
77
0
Tacker是基于NFV标准组织ESTI的MANO架构来实现通用的 NFV编排和VNF管理需求的一个OpenStack服务,ESTI MANO中的缩写MANO是指NFV的MANagement and Orchestration.
 

总体架构

 

工作流程

  1. Tacker 根据BSS/OSS需求从右侧的服务目录(VNFD catalog)中选出相应的服务项目,如vRouter。
  2. Tacker 把具体的 VNFD推送给左侧的OpenStack Heat 来创建VDU单元(Virtual Deployment Unit,对应含VNF要求的 VM部署单元)。
  3. 用Heat来启动生成具体的VM实例,如图下方的 VNF FWaaS,VNF vRouter等。
  4. (在图中部)用 Mgmt Driver (管理驱动)来配置 VMs,通常会通过厂商EMS(如大家看到的 "Vendor Y Manager"),或者是SSH这样的简单手段。
  5. SFC (Service Function Chain 服务功能链)的执行实现。这里例子用的是ODL 控制器,配合IETF的NSH(Network Service Header,网络服务包头)来实现服务链的执行。 NSH通过描述数据面的Header来沿着网络服务路径(Service Path)承载网络服务信息,意在实现与传输独立的“服务面”(Service Plane),可以与VXLAN,MPLS, UDP等传输封装协议配合。在NSH当前开源实现中可以支持OVS数据面(VXLAN)和ODL的控制面。
  6. 监控VNF健康/可用性availability状况,出现问题是自动治愈回复(重新生成VNF,保证业务连续性)。在之前提到的OpenStack东京峰会Demo Theater,Tacker 项目core team做过演示,用ping做基本监控,然后模拟failure (通过blocking ICMP),Tacker自动检测到,然后重建恢复VNF功能。
 
 

模块分析

一、VIM(Virtual Infrastructure Management)
VIM是负责对网络功能虚拟基础设施(NFVI)进行管理和控制,包括其中的计算、存储和网络资源。NFVO通过keystone直接对VIM进行编排管理。VIM的配置文件如下:
edit the vim-admin.yaml:
auth_url: '//controller/identity/v3'
username: 'username-admin'
password: 'Vn_tacker'
project_name: 'projectname-admin'
project_domain_name: 'Default'
user_domain_name: 'Default'
这里的VIM给用户创建一个资源管理的空间,继而可以在这个资源空间上配置自己的网络。
该模块可以直接对neutron的服务进行调用,主要是将底层的资源进行整合,为上层的编排和管理请求提供支持。
1.1 一个VIM的创建流程如下:
1.         用户请求创建VIM,通过tacker extension api发送创建VIM请求到NfvoPlugin;
2.         NfvoPlugin检查VIM名称是否存在,将VIM状态置为PENDING;调用driver的register_vim方法,验证并注册VIM;
3.         然后交给父类DB处理,调用_validate_default_vim,确保只存在一个default VIM 。NfvoPluginDb在两张表中创建记录;
4.         通过commonService在DB中创建create event,并随后将VIM状态修改为REGISTERING;
5.         调用monitor_vim更新VIM状态:
a)         调用driver的vim_status方法,检查VIM的健康状态,若可以PING通,则返回True,否则,返回False;
b)         根据健康检查的返回值,将VIM状态通过update_vim_status方法更新为REACHABLE/UNREACHABLE;
c)         修改数据库信息。
6.         向用户返回结果。
 
1.2 一个VIM的删除
 
1.3 一个VIM的更新
 
 
VNFD(Virtual Network Function Descriptor)
VNFD(VNF描述符)是使用TOSCA YAML文件创建的模板,用于创建VNF时使用。该模板中某些变量可以通过参数名进行定义,在创建VNF时,传入参数文件,就可以实现拥有不同参数配置的VNF。
VNFD TOSCA模板文件包括四个一级目录:
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
 
description: Demo example with key_name
 
metadata:
     template_name: sample-tosca-vnfd-keyname
 
topology_template:
...
 topoligy_template包含三个二级目录:
inputs:(可选,用于定义参数名,在node_templates中使用,创建vnf时可传参)
  ...
  node_templates:(必选,定义VDUs,CPs,VLs)
  ...
  policies:(可选,用于定义monitor或者scale策略)
  ...
 
1.1 创建VNFD流程
  1. 用户请求创建VNFD。
  2. 通过tacker extension api发送创建路由请求到VNFMPlugin。
  3. VNFMPlugin进行一些合法检查,然后丢给父类DB处理。
    1. vnfd模板是否是字典类型
    2. 模板是否合法
    3. VNFD名字在DB中是否已经存在
    4. 是否包含service_types数据
    5. 从模板中提取必要的信息
  4. VNFMPluginDB在三张表中创建记录,然后通过commonService在DB中创建event。
  5. 向用户返回结果
 
1.2 删除VNFD
 
1.3 更新VNFD
 

VNF(Virtual Network Function)

VNF是网元,对应openstack中的虚机。通过VNFD中创建的模板来创建和配置虚机。
 
1.1 创建VNF流程
  1. 用户请求创建VNF。
  2. 通过tacker extension api发送创建路由请求到VNFMPlugin。
  3. VNFMPlugin进行一些合法检查。
  4. 调VNFMPluginDB接口在VNF,VNF_attribute,EVENT里创建记录。此时VNF状态为PENDING_CREATE。
  5. 调mgmt_driver的create_pre。(目前实现为空)
  6. 如果VNF配置了alarming_policy,为VNF添加alarm url(ceilmeter端口)。
  7. 调infra_driver(OpenStack) create接口创建VNF(虚机)。OpenStack driver将tosca模板转换后通过heatclient向openstack VIM发送创建请求。
  8. 创建个eventlet线程 进行如下处理:
  9. 调infra_driver的create_wait接口去轮询虚机状态,默认查询60次,每次间隔5秒。
  10. 更新虚机状态,创建EVENT。如果成功,虚机状态为ACTIVE,否则为ERROR。
  11. 调mgmt_driver的create_post。(目前实现为空)
  12. 调mgmt_driver的mgmt_call,执行action: create_vnf,对虚机进行配置。
  13. 如果VNF配置了monitoring_policy,将VNF加入监控列表中。
  14. 在等待VNF创建完成后(默认30s),进行更新VNF(见后面章节)。
  15. 向用户返回结果
 
1.2 删除VNF
 
1.3 更新VNF
 
1.4 VNF状态图
  1. 创建、更新、删除、扩容时,先标记为PENDING_xxx状态,如果失败,都会标记为ERROR状态。
  2. 如果创建、更新、扩容成功,会变为ACTIVE状态。如果删除成功,会记录deleted_at时间,不能再被查询到。
  3. 如果配置了Monitor,根据ping/_ping结果和相应的策略,可能标记为DEAD状态。
  4. 被标记为ERROR和DEAD状态的VNF只能被删除,不能重新变成ACTIVE状态。
 
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0