VNFM开发技术方案初步设计.docx
《VNFM开发技术方案初步设计.docx》由会员分享,可在线阅读,更多相关《VNFM开发技术方案初步设计.docx(22页珍藏版)》请在冰豆网上搜索。
VNFM开发技术方案初步设计
VNFM开发技术方案初步设计
北京神州泰岳软件股份有限公司
一、总设计思路
VNFM管理平台的所有功能开发采用开源Tacker项目作为原生系统,在此项目的基础上修改源码架构、添加新功能等,参照中国移动的企业标准、ETSI以及社区规范来统一设计,所有研发工作分六步,分别如下:
第一步:
NFVO和VNFM拆分
拆分是所有功能研发的前提工作,依据需求,我们把VNFO和VNFM从源码架构、功能两个部分分别做了拆分。
从tacker源码架构拆分后NFVO和VNFM作为两个独立的server,NFVO和VNFM各有一套RestfulAPI,共用conductor模块与DB交互。
NFVO和VNFM作为两个独立的进程,可以单独启动、停用等操作。
源码架构拆分后,从功能的拆分角度考虑主要把例如VNFD、VNF软件、镜像、配置文件等功能拆分到NFVO服务中管理,VNFM服务跟NFVO服务订阅。
第二步:
从安全、性能、运维等角度考虑整体技术和功能的设计
第三步:
VNFM和NFVO的功能开发
第四步:
系统设备管理功能开发
第五步:
集成测试工具的开发及测试
第六步:
集成对接及运维测试工作
二、tacker架构设计(改造后)
依据tacker作为原生系统改造后的架构图,将NFVO和VNFM拆分成两个独立的服务进程,各有一套RestfulAPI,都支持Horizon和CLI;重新启用Condutor服务模块与DB交互;NFVCatalog拆分到NFVO中管理,VNFM去NFVO中订阅。
三、功能架构设计
依据通用VNFM开发功能列表设计(后面参考详细的需求说明书可能需要调整)。
按阶段性要求的时间点迭代完成功能研发工作。
四、功能详细设计
五、RestfulAPI设计
按照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//policies
UpdatePolicy(更新策略)
PUT/v1/vnfs//policies/{policyID}
DeletePolicy(删除策略)
DELETE/v1/vnfs//policies/{policyID}{?
NFVOID&VNFMID}
QueryPolicy(查询策略)
GET/v1/vnfs//policies/{policyID}{?
NFVOID&VNFMID}
GET/v1/vnfs//policies{?
NFVOID&VNFMID}
ActivePolicy(激活策略)
PUT/v1/vnfs//policies/{policyID}/active
PUT/v1/vnfs//policies/active
DeActivePolicy(去激活策略)
PUT/v1/vnfs//policies/{policyID}/deactive
PUT/v1/vnfs//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&qType}
ListHistoryAlarms
GET/v1/alarm/vnfmFm/hisAlarms{?
NFVOID&qType&StartTime&EndTime&StartSeq&EndSeq}
六、数据库表设计
需要调整tacker数据库表结构,新增表如VNF包表结构、配置管理表结构、故障管理表结构、日志管理表结构等等。
具体表结构属性需要阅读需求规范后详细讨论需求后制定。
相关表:
表名
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
projectid
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
projectid
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
projectid
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
projectid
varchar(64)
否
vnfd_id
vnfd模板的id
varchar(36)
否
外键关联vnfd表的id
service_type
服务类型(VDU,CP,VL)
varchar(64)
是
表名
nsd
字段名
含义
字段类型
是否可为空
属性描述
tenant_id
projectid
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
projectid
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
Classifierid
varchar(36)
否
外键关联vnffgclassfilters表的id
eth_src
发送端网卡
varchar(36)
是
eth_dst
接收端网卡
varchar(36)
是
eth_type
网卡类型
varchar(36)
是
vlan_id
vlanid
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
projectid
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
Classifierid
varchar(36)
否
主键
tenant_id
projectid
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
字段名