资源描述
VNFM开发技术方案初步设计
北京神州泰岳软件股份有限公司
一、总设计思路
VNFM管理平台的所有功能开发采用开源Tacker项目作为原生系统,在此项目的基础上修改源码架构、添加新功能等,参照中国移动的企业标准、ETSI以及社区规范来统一设计,所有研发工作分六步,分别如下:
第一步:NFVO和VNFM拆分
拆分是所有功能研发的前提工作,依据需求,我们把VNFO和VNFM从源码架构、功能两个部分分别做了拆分。
从tacker源码架构拆分后NFVO和VNFM作为两个独立的server,NFVO和VNFM各有一套Restful API,共用conductor模块与DB交互。NFVO和VNFM作为两个独立的进程,可以单独启动、停用等操作。
源码架构拆分后,从功能的拆分角度考虑主要把例如VNFD、VNF软件、镜像、配置文件等功能拆分到NFVO服务中管理,VNFM服务跟NFVO服务订阅。
第二步:从安全、性能、运维等角度考虑整体技术和功能的设计
第三步:VNFM和NFVO的功能开发
第四步:系统设备管理功能开发
第五步:集成测试工具的开发及测试
第六步:集成对接及运维测试工作
二、tacker架构设计(改造后)
依据tacker作为原生系统改造后的架构图,将NFVO和VNFM拆分成两个独立的服务进程,各有一套Restful API,都支持Horizon和CLI;重新启用Condutor服务模块与DB交互;NFV Catalog拆分到NFVO中管理,VNFM去NFVO中订阅.
三、功能架构设计
依据通用VNFM开发功能列表设计(后面参考详细的需求说明书可能需要调整).按阶段性要求的时间点迭代完成功能研发工作。
四、功能详细设计
五、Restful API设计
按照VNFM-VNF&EMS接口规范细化参数开发相关相关功能:
一级功能
二级功能
接口名称
REST接口
参数说明
VNFM-VNF
认证
Authentication(VNFM—VNF) 用户认证
POST /v1/vnf/authentication/token
Authentication(VNF—VNFM) 用户认证
POST /v1/vnfs/{vnfinstanceid}/ authentication/token
VNF配置
SetInitialConfiguration 实例化初始配置
POST /v1/vnf/configuration
VNF生命周期管理
GetProgress 获取实例化/扩缩容进度
GET /v1/vnf/progress{?eventtype}
HealingVNF 自愈VNF(可选)
POST /v1/vnfs/{vnfinstanceid}/vms/{vmid}/healing
VNF生命周期变化通知
VNFLifecycleChangesNotification (VNFM-VNF) VNF生命周期变化通知
POST /v1/vnf/lifecyclechangesnotification
VNF性能
GetIndicatorValue 获取指标数据
Get /v1/vnf/indicators/{indicatorname}
Get /v1/vnf/indicators
Event通知
VNFPreScaleNotification(VNFM-VNF) VNF生命周期变化准备通知
POST /v1/vnf/prescalenotification
VNFHealingNotification(VNFM-VNF) 自愈完成通知(可选)
POST/v1/vnf/vms/{vmid}/healing
VNFM—EMS
认证
Authentication(VNFM—EM) 用户认证
POST /v1/vnfms/authentication/token
VNF生命周期变化通知
VNFLifecycleChangesNotification(VNFM-EM) VNF生命周期变化通知
POST /v1/vnfs/lifecyclechangesnotification
Event通知
VNFPreScaleNotification(VNFM—EM) VNF扩缩容准备通知
POST /v1/vnfs/prescalenotification
按照NFVO-VNFM接口规范细化传递参数开发相关功能:
一级功能
接口名称
REST接口
参数说明
VNF包管理
QuerySubscribe(查询VNF包订阅)
GET /v1/catalog/subscribe{?NFVOID&VNFMID}
CreateSubscribe(创建VNF包订阅)
POST /v1/catalog/subscribe
DeleteSubscribe(删除VNF包订阅)
DELETE /v1/catalog/subscribe/{subscribeid}{?NFVOID&VNFMID}
VNFPackageNotify(VNF包通知)
POST /v1/catalog/notification
QueryVNFPackage(查询VNF包信息)
GET /v1/catalog/vnfpkgs{?NFVOID&VNFMID}
FetchVNFPackage(获取VNF包)
GET /v1/catalog/vnfpkgs/{packageid}/{filename}{?NFVOID&VNFMID}
VNFD信息获取
QueryVNFD(查询VNFD信息)
GET /v1/vnfds/{vnfd_id}{?NFVOID&VNFMID}
VNF资源授权
GrantLifecycle(VNF生命周期授权)
PUT /v1/resource/grant
VNF生命周期管理
InstantiateVnf(初始化VNF实例)
POST /v1/vnfs
QueryVnf(查询VNF)
GET /v1/vnfs/{vnfInstanceID} {?NFVOID&VNFMID}
GET /v1/vnfs{?NFVOID&VNFMID}
ScaleVnf(扩容缩容接口)
PUT /v1/vnfs/{vnfInstanceID}/scale
UpgradeVnfSoftware(升级VNF软件)
PUT /v1/vnfs/{vnfInstanceID}/upgrade
TerminateVnf(终止VNF)
DELETE /v1/vnfs/{vnfInstanceID}{?NFVOID&VNFMID}
GetJobStatus(获取任务执行状态)
GET /v1/jobs/{jobId}{?NFVOID&VNFMID&ResponseID }
VNF生命周期变化通知
VNFLifecycleChangesNotification (VNF生命周期变化通知)
POST /v1/vnfs/lifecyclechangesnotification
策略管理
CreatePolicy(策略下发)
POST /v1/vnfs/〈vnfInstanceID〉/policies
UpdatePolicy(更新策略)
PUT /v1/vnfs/<vnfInstanceID>/policies/{policyID}
DeletePolicy(删除策略)
DELETE /v1/vnfs/<vnfInstanceID〉/policies /{policyID}{?NFVOID&VNFMID}
QueryPolicy(查询策略)
GET /v1/vnfs/〈vnfInstanceID〉/policies/{policyID}{?NFVOID&VNFMID}
GET /v1/vnfs/〈VNFInstanceID>/policies{?NFVOID&VNFMID}
ActivePolicy(激活策略)
PUT /v1/vnfs/〈vnfInstanceID〉/policies/{policyID}/active
PUT /v1/vnfs/<vnfInstanceID>/policies/active
DeActivePolicy(去激活策略)
PUT /v1/vnfs/〈vnfInstanceID〉/policies/{policyID}/deactive
PUT/v1/vnfs/<vnfInstanceID〉/policies/deactive
Event通知
VNFMEventNotification(VNFMEvent通知)
POST /v1/vnfs/eventnotification
告警
ListSubcriptions
GET/v1/alarm/subscribe{?NFVOID&qType }
CreateSubcription
POST/v1/alarm/subscribe
DeleteSubcription
DELETE/v1/alarm/subscribe/{subscribeid}{?NFVOID&VNFMID&subType}
PushAlarms
PUT/v1/alarm /pushalarms
PushFmHeartbeat
PUT/v1/alarm/pushfmheartbeat
ListActiveAlarms
GET/v1/alarm/vnfmFm/asctiveAlarms{?NFVOID&q Type}
ListHistoryAlarms
GET/v1/alarm/vnfmFm/hisAlarms{?NFVOID&qType&StartTime&EndTime&StartSeq &EndSeq}
六、数据库表设计
需要调整tacker数据库表结构,新增表如VNF包表结构、配置管理表结构、故障管理表结构、日志管理表结构等等。具体表结构属性需要阅读需求规范后详细讨论需求后制定.
北京神州泰岳股份有限公司
OpenStack研发和运维
相关表:
表名
vimauths
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
vim_id
vim的id
varchar(36)
否
外键关联vim表的id
password
密码
varchar(255)
是
auth_url
vim访问地址
varchar(255)
否
vim_project
vim项目和项目所属域
text
是
auth_cred
认证信息(包括用户名,密码,访问地址,项目名)
text
是
表名
vims
字段名
含义
字段类型
是否可为空
属性描述
id
vim的id
varchar(36)
否
主键
type
vim类型
varchar(64)
是
tenant_id
project id
varchar(64)
否
name
project名
varchar(255)
否
description
描述
text
是
placement_attr
region信息
text
是
shared
共享的
tinyint(1)
否
status
状态
varchar(255)
否
is_default
是否是默认的
tinyint(1)
否
created_at
创建时间
datetime
是
updated_at
更新时间
datetime
是
deleted_at
删除时间
datetime
是
表名
vnf
字段名
含义
字段类型
是否可为空
属性描述
id
vnf的id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
name
project名
varchar(255)
否
vnfd_id
vnfd模板的id
varchar(36)
否
外键关联vnfd表的id
instance_id
实例id
varchar(64)
是
mgmt_url
vnf创建完成之后返回的vdu的ip地址
varchar(255)
是
status
状态
varchar(64)
是
description
描述
text
是
placement_attr
region信息
text
是
vim_id
vim的id
varchar(36)
否
外键关联vim表的id
error_reason
错误原因
text
是
created_at
创建时间
datetime
是
updated_at
更新时间
datetime
是
deleted_at
删除时间
datetime
是
表名
vnf_attribute
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
vnf_id
vnf的id
varchar(36)
否
外键关联vnf表的id
key
vnf中的key
varchar(255)
否
value
vnf中的value
text
是
表名
vnfd
字段名
含义
字段类型
是否可为空
属性描述
id
vnfd模板的id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
name
project名
varchar(255)
否
description
描述
text
否
mgmt_driver
mgmt驱动
varchar(255)
是
created_at
创建时间
datetime
是
updated_at
更新时间
datetime
是
deleted_at
删除时间
datetime
是
template_source
模板源地址
varchar(255)
否
表名
vnfd_attribute
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
vnfd_id
vnfd模板的id
varchar(36)
否
外键关联vnfd表的id
key
vnfd中的属性名
varchar(255)
否
value
vnfd中的属性值
text
是
表名
servicetypes
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
vnfd_id
vnfd模板的id
varchar(36)
否
外键关联vnfd表的id
service_type
服务类型(VDU,CP,VL)
varchar(64)
是
表名
nsd
字段名
含义
字段类型
是否可为空
属性描述
tenant_id
project id
varchar(64)
否
id
nsd模板的id
varchar(36)
否
主键
name
nsd名
varchar(255)
否
description
描述
text
否
created_at
创建时间
datetime
是
updated_at
更新时间
datetime
是
deleted_at
删除时间
datetime
是
vnfds
nsd模板中包含的vnfd
text
是
template_source
模板源地址
varchar(255)
是
表名
nsd_attribute
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
nsd_id
nsd模板的id
varchar(36)
否
外键关联nsd表的id
key
nsd中的属性名
varchar(255)
否
value
nsd中的属性值
text
是
表名
ns
字段名
含义
字段类型
是否可为空
属性描述
tenant_id
project id
varchar(64)
否
id
ns的id
varchar(36)
否
主键
created_at
创建时间
datetime
是
updated_at
更新时间
datetime
是
deleted_at
删除时间
datetime
是
nsd_id
nsd模板的id
varchar(36)
否
外键关联vnfd表的id
vim_id
vim的id
varchar(36)
否
外键关联vim表的id
name
vim名
varchar(255)
否
description
描述
text
是
vnf_ids
vnf的id集合
mgmt_url
ns创建完之后返回的地址
varchar(255)
是
status
状态
varchar(64)
是
error_reason
错误原因
text
是
表名
aclmatchcriterias
字段名
含义
字段类型
是否可为空
属性描述
id
acl匹配规则 id
varchar(36)
否
主键
vnffgc_id
Classifier id
varchar(36)
否
外键关联vnffgclassfilters表的id
eth_src
发送端网卡
varchar(36)
是
eth_dst
接收端网卡
varchar(36)
是
eth_type
网卡类型
varchar(36)
是
vlan_id
vlan id
int(11)
是
vlan_pcp
vlan 优先权代码点
int(11)
是
mpls_label
多协议标签交换label
int(11)
是
mpls_tc
多协议标签交换tc
int(11)
是
ip_dscp
ip中的dscp值
int(11)
是
ip_ecn
ip中的ecn值
int(11)
是
ip_src_prefix
发送端ip前缀
varchar(36)
是
ip_dst_prefix
接收端ip前缀
varchar(36)
是
source_port_min
发送端端口号最小值
int(11)
是
source_port_max
发送端端口号最大值
int(11)
是
destination_port_min
接收端端口号最小值
int(11)
是
destination_port_max
接收端端口号最大值
int(11)
是
ip_proto
ip协议
int(11)
是
network_id
网络id
varchar(36)
是
network_src_port_id
发送端网络端口号id
varchar(36)
是
network_dst_port_id
接收端网络端口号id
varchar(36)
是
tenant_id
project id
varchar(64)
是
icmpv4_type
icmpv4协议类型
int(11)
是
icmpv4_code
icmpv4协议代码
int(11)
是
arp_op
arp协议的op表示是请求包还是应达包
int(11)
是
arp_spa
发送端的协议地址
int(11)
是
arp_tpa
目标端协议地址
int(11)
是
arp_sha
发送端的硬件地址
int(11)
是
arp_tha
目标端硬件地址
int(11)
是
ipv6_src
发送端的ipv6地址
varchar(36)
是
ipv6_dst
目的端的ipv6地址
varchar(36)
是
ipv6_flabel
ipv6的流标签
int(11)
是
icmpv6_type
icmpv6协议类型
int(11)
是
icmpv6_code
icmpv6协议代码
int(11)
是
ipv6_nd_target
ipv6的nd协议的待解析的ipv6地址
varchar(36)
是
ipv6_nd_sll
ipv6的nd协议的sll值
varchar(36)
是
ipv6_nd_tll
ipv6的nd协议的tll值
varchar(36)
是
表名
vnffgclassifiers
字段名
含义
字段类型
是否可为空
属性描述
id
Classifier id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
nfp_id
vnffgnfps的id
varchar(36)
否
外键关联vnffgnfps表的id
instance_id
实例id
varchar(255)
是
chain_id
vnf转发链id
varchar(36)
否
外键关联vnffgchains表的id
status
状态
varchar(255)
否
name
vnf转发链名字
varchar(255)
是
表名
vnffgchains
字段名
含义
字段类型
是否可为空
属性描述
id
vnf转发链id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
instance_id
实例id
varchar(255)
是
nfp_id
vnffgnfps的id
varchar(36)
否
外键关联vnffgnfps表的id
status
状态
varchar(255)
否
path_id
转发路径id
varchar(255)
否
symmetrical
对称性
tinyint(1)
是
chain
转发链信息
text
是
表名
vnffgnfps
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
vnffg_id
vnffg模板id
varchar(36)
否
外键关联vnffgs表的id
name
vnffg模板名称
varchar(255)
否
status
状态
varchar(255)
否
path_id
转发路径id
varchar(255)
否
symmetrical
对称性
tinyint(1)
是
表名
vnffgs
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
name
project name
varchar(255)
否
description
描述
varchar(255)
是
vnffgd_id
vnffg模板id
varchar(36)
否
外键关联vnffgtemplates表的id
status
状态
varchar(255)
否
vnf_mapping
和哪个vnf mapping
text
是
attributes
模板相关属性
text
是
表名
vnffgtemplates
字段名
含义
字段类型
是否可为空
属性描述
id
vnffg模板id
varchar(36)
否
主键
tenant_id
project id
varchar(64)
否
name
project name
varchar(255)
否
description
描述
varchar(255)
是
template
模板内容
text
是
template_source
模板源地址
varchar(255)
是
表名
events
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
int(11)
否
自增主键
resource_id
资源id
varchar(36)
否
resource_state
资源状态
varchar(64)
否
resource_type
资源类型
varchar(64)
否
event_type
事件类型
varchar(64)
否
timestamp
发生时间
datetime
否
event_details
事件详情
text
是
表名
alembic_version
字段名
含义
字段类型
是否可为空
属性描述
version_num
alembic版本号
varchar(32)
否
主键
展开阅读全文