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接口规范细化参数开发相关相关功能: 一级功能 二级功能 认证 VNF配置 VNF生命周期管理 接口名称 Authentication(VNFM-VNF) 用户认证 Authentication(VNF-VNFM) 用户认证 SetInitialConfiguration 实例化初始配置 GetProgress 获取实例化/扩缩容进度 HealingVNF 自愈VNF(可选) 化通知 GetIndicatorValue 获取指标数据 VNFM-VNF VNF生命周期变化通知 VNF性能 Event通知 VNFLifecycleChangesNotification (VNFM-VNF) VVNFPreScaleNotification(VNFM-VNF) VNF生命通知 VNFM-EMS 认证 VNF生命周期变化通知 VNFHealingNotification(VNFM-VNF) 自愈完成通Authentication(VNFM-EM) 用户认证 VNFLifecycleChangesNotification(VNFM-EM) V化通知 Event通知 接口名称 QuerySubscribe(查询VNF包订阅) CreateSubscribe(创建VNF包订阅) VNF包管理 DeleteSubscribe(删除VNF包订阅) VNFPackageNotify(VNF包通知) QueryVNFPackage(查询VNF包信息) FetchVNFPackage(获取VNF包) VNFD信息获取 VNF资源授权 QueryVNFD(查询VNFD信息) GrantLifecycle(VNF生命周期授权) InstantiateVnf(初始化VNF实例) QueryVnf(查询VNF) VNFPreScaleNotification(VNFM-EM) VNF扩缩容REST接口 按照NFVO-VNFM接口规范细化传递参数开发相关功能: 一级功能 GET /v1/cataloPOST /v1/catalDELETE /v1/caPOST /v1/catalGET /v1/cataloGET /v1/cataloGET /v1/vnfds/{vnfdPUT /v1/resource/grPOST /v1/vnfs GET /v1/vnfs/{vGET /v1/vnfs{?VNF生命周期管理 ScaleVnf(扩容缩容接口) UpgradeVnfSoftware(升级VNF软件) TerminateVnf(终止VNF) GetJobStatus(获取任务执行状态) PUT /v1/vnfs/{vPUT /v1/vnfs/{vDELETE /v1/vnfs/{vGET /v1/jobs/{jobIdVNF生命周期变化通知 VNFLifecycleChangesNotification (VNF生命周期变化通知) CreatePolicy(策略下发) UpdatePolicy(更新策略) DeletePolicy(删除策略) POST /v1/vnfs/POST /v1/vnfs/PUT /v1/vnfs/相关表: 表名 字段名 id vim_id password auth_url vim_project auth_cred vimauths 含义 主键id vim的id 密码 vim访问地址 vim项目和项目所属域 认证信息(包括用户名,密码,访问地址,项目名) 字vavavavatextex 表名 字段名 id type tenant_id name description placement_attr shared status is_default created_at updated_at deleted_at vims 含义 vim的id vim类型 project id project名 描述 region信息 共享的 状态 是否是默认的 创建时间 更新时间 删除时间 字vavavavatextextinvatindadada 表名 字段名 id tenant_id name vnfd_id instance_id mgmt_url status vnf 含义 vnf的id project id project名 vnfd模板的id 实例id vnf创建完成之后返回的vdu的ip地址 状态 字vavavavavavavadescription placement_attr vim_id error_reason created_at updated_at deleted_at 描述 region信息 vim的id 错误原因 创建时间 更新时间 删除时间 textexvatexdadada 表名 字段名 id vnf_id key value vnf_attribute 含义 主键id vnf的id vnf中的key vnf中的value 字vavavatex 表名 字段名 id tenant_id name description mgmt_driver created_at updated_at deleted_at template_source vnfd 含义 vnfd模板的id project id project名 描述 mgmt驱动 创建时间 更新时间 删除时间 模板源地址 字vavavatexvadadadava 表名 字段名 id vnfd_id vnfd_attribute 含义 主键id vnfd模板的id 字vavakey value vnfd中的属性名 vnfd中的属性值 vatex 表名 字段名 id tenant_id vnfd_id service_type servicetypes 含义 主键id project id vnfd模板的id 服务类型(VDU,CP,VL) 字vavavava 表名 字段名 tenant_id id name description created_at updated_at deleted_at vnfds template_source nsd 含义 project id nsd模板的id nsd名 描述 创建时间 更新时间 删除时间 nsd模板中包含的vnfd 模板源地址 字vavavatexdadadatexva 表名 字段名 id nsd_id key value nsd_attribute 含义 主键id nsd模板的id nsd中的属性名 nsd中的属性值 字vavavatex 表名 字段名 tenant_id ns 含义 project id 字vaid created_at updated_at deleted_at nsd_id vim_id name description vnf_ids mgmt_url status error_reason ns的id 创建时间 更新时间 删除时间 nsd模板的id vim的id vim名 描述 vnf的id集合 ns创建完之后返回的地址 状态 错误原因 vadadadavavavatex vavatex 表名 字段名 id vnffgc_id eth_src eth_dst eth_type vlan_id vlan_pcp mpls_label mpls_tc ip_dscp ip_ecn ip_src_prefix ip_dst_prefix source_port_min source_port_max destination_port_min destination_port_max ip_proto network_id network_src_port_id aclmatchcriterias 含义 acl匹配规则 id Classifier id 发送端网卡 接收端网卡 网卡类型 vlan id vlan 优先权代码点 多协议标签交换label 多协议标签交换tc ip中的dscp值 ip中的ecn值 发送端ip前缀 接收端ip前缀 发送端端口号最小值 发送端端口号最大值 接收端端口号最小值 接收端端口号最大值 ip协议 网络id 发送端网络端口号id 字vavavavavaininininininvavainininininvavanetwork_dst_port_id tenant_id icmpv4_type icmpv4_code arp_op arp_spa arp_tpa arp_sha arp_tha ipv6_src ipv6_dst ipv6_flabel icmpv6_type icmpv6_code ipv6_nd_target ipv6_nd_sll ipv6_nd_tll 接收端网络端口号id project id icmpv4协议类型 icmpv4协议代码 arp协议的op表示是请求包还是应达包 发送端的协议地址 目标端协议地址 发送端的硬件地址 目标端硬件地址 发送端的ipv6地址 目的端的ipv6地址 ipv6的流标签 icmpv6协议类型 icmpv6协议代码 ipv6的nd协议的待解析的ipv6地址 ipv6的nd协议的sll值 ipv6的nd协议的tll值 vavainininininininvavainininvavava 表名 字段名 id tenant_id nfp_id instance_id chain_id status name vnffgclassifiers 含义 Classifier id project id vnffgnfps的id 实例id vnf转发链id 状态 vnf转发链名字 字vavavavavavava 表名 字段名 id tenant_id instance_id nfp_id status vnffgchains 含义 vnf转发链id project id 实例id vnffgnfps的id 状态 字vavavavavapath_id symmetrical chain 转发路径id 对称性 转发链信息 vatintex 表名 字段名 id tenant_id vnffg_id name status path_id symmetrical vnffgnfps 含义 主键id project id vnffg模板id vnffg模板名称 状态 转发路径id 对称性 字vavavavavavatin 表名 字段名 id tenant_id name description vnffgd_id status vnf_mapping attributes vnffgs 含义 主键id project id project name 描述 vnffg模板id 状态 和哪个vnf mapping 模板相关属性 字vavavavavavatextex 表名 字段名 id tenant_id name description template template_sourcevnffgtemplates 含义 vnffg模板id project id project name 描述 模板内容 模板源地址
字vavavavatexva
表名 字段名 id resource_id resource_state resource_type event_type timestamp event_details events 含义 主键id 资源id 资源状态 资源类型 事件类型 发生时间 事件详情 字invavavavadatex 表名 字段名 version_num alembic_version 含义 alembic版本号 字va