1、 VNFM开发技术方案初步设计 北京神州泰岳软件股份有限公司 一、总设计思路 VNFM管理平台的所有功能开发采用开源Tacker项目作为原生系统,在此项目的基础上修改源码架构、添加新功能等,参照中国移动的企业标准、ETSI以及社区规范来统一设计,所有研发工作分六步,分别如下: 第一步:NFVO和VNFM拆分 拆分是所有功能研发的前提工作,依据需求,我们把VNFO和VNFM从源码架构、功能两个部分分别做了拆分。 从tacker源码架构拆分后NFVO和VNFM作为两个独立的server,NFVO和VNFM各有一套Rest
2、ful API,共用conductor模块与DB交互。NFVO和VNFM作为两个独立的进程,可以单独启动、停用等操作。 源码架构拆分后,从功能的拆分角度考虑主要把例如VNFD、VNF软件、镜像、配置文件等功能拆分到NFVO服务中管理,VNFM服务跟NFVO服务订阅。 第二步:从安全、性能、运维等角度考虑整体技术和功能的设计 第三步:VNFM和NFVO的功能开发 第四步:系统设备管理功能开发 第五步:集成测试工具的开发及测试 第六步:集成对接及运维测试工作 二、tacker架构设计(改造后) 依据tacker作为原生系统改造后的架构图,将NF
3、VO和VNFM拆分成两个独立的服务进程,各有一套Restful API,都支持Horizon和CLI;重新启用Condutor服务模块与DB交互;NFV Catalog拆分到NFVO中管理,VNFM去NFVO中订阅. 三、功能架构设计 依据通用VNFM开发功能列表设计(后面参考详细的需求说明书可能需要调整).按阶段性要求的时间点迭代完成功能研发工作。 四、功能详细设计 五、Restful API设计 按照VNFM-VNF&EMS接口规范细化参数开发相关相关功能: 一级功能 二级功能 接口名称 REST接口 参数说明 VNFM-VNF 认证 Authen
4、tication(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} HealingVN
5、F 自愈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通知 VNFPreScaleNo
6、tification(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生
7、命周期变化通知 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} CreateSub
8、scribe(创建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/c
9、atalog/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} {?NFVOI
10、D&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
11、ResponseID }
VNF生命周期变化通知
VNFLifecycleChangesNotification (VNF生命周期变化通知)
POST /v1/vnfs/lifecyclechangesnotification
策略管理
CreatePolicy(策略下发)
POST /v1/vnfs/〈vnfInstanceID〉/policies
UpdatePolicy(更新策略)
PUT /v1/vnfs/
12、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/ 13、D>/policies/active
DeActivePolicy(去激活策略)
PUT /v1/vnfs/〈vnfInstanceID〉/policies/{policyID}/deactive
PUT/v1/vnfs/ 14、ateSubcription
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}
ListHistory 15、Alarms
GET/v1/alarm/vnfmFm/hisAlarms{?NFVOID&qType&StartTime&EndTime&StartSeq &EndSeq}
六、数据库表设计
需要调整tacker数据库表结构,新增表如VNF包表结构、配置管理表结构、故障管理表结构、日志管理表结构等等。具体表结构属性需要阅读需求规范后详细讨论需求后制定.
北京神州泰岳股份有限公司
16、 OpenStack研发和运维
相关表:
表名
vimauths
字段名
含义
字段类型
是否可为空
属性描述
id
主键id
varchar(36)
否
主键
vim_id
vim的id
varchar(36)
否
外键关联vim表的id
password
密码
varchar(255)
是
auth_url
vim访问地址
varchar(255)
否
vim_project 17、
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
是
pl 18、acement_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
19、
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
是
placeme 20、nt_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)
否
主键 21、
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
描述
tex 22、t
否
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
vnf 23、d模板的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_typ 24、e
服务类型(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
是
delet 25、ed_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中的属性值
t 26、ext
是
表名
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
27、
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匹配规则 28、 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)
29、是
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
接收端端口 30、号最小值
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协议类型
31、
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) 32、
是
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)
是
表名
vnff 33、gclassifiers
字段名
含义
字段类型
是否可为空
属性描述
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)
34、否
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)
35、
否
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 36、模板名称
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)
否
des 37、cription
描述
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)
否
主键
38、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 39、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)
否
主键






