虚资源创建过程
先定义VNFD,VNFD是用来描述VNF的,定义VNF需要哪些虚拟资源,比如定义多少个虚机,虚机的资源配置。
然后制作包。包里VNFD目录放VNFD文件。Software目录下放一些程序、配置,脚本等文件,可以由VNFM执行里面的脚本将里面的文件拷贝到VNF某虚机上,这个是根据业务自己的需要自己定义的。包里其它目录都是较固定的,可以不作为重点。
VNFD里的VDU里的一项表示一个虚机,cpu_cores、mem_size、disk分别表示此虚机的cpu/mem/disk大小,connection_point表示虚机的网络,一项表示一个网络,网络的具体的定义在VNFD文件后面。
VNFD里还可以写一些文件注入相关的东西,即虚拟机拉起后修改虚机里的某个文件,一般情况下只在里面写上虚机本身的一些配置,比如修改网络相关的配置文件,业务的配置文件一般不在VNFD里修改和生成。上面截图中"config_drive": true时就表示虚机启动后会执行user_data里的命令。
网络和子网一般是由VIM和NFVO先创建好。VNFD里定义某个虚机引用某个网络和子网,并指定虚机的ip地址。虚机创建时就创建相应的网卡并绑定相应的网络、子网和ip地址。
例如在这个例子里VIM上已经创建好了demo-net/demo-subnet、demo2-net/demo2-net、demo5-net/demo5-subnet三个网络/子网,VNFD进行引用,SIPGW1这台虚机引用了port_ext_sipgw1、port_inner_sipgw1,此时SIPGW1就会有两块网卡和指定的IP。
VIM接口
各个厂家的VIM实现都不同,但是一般都是兼容openstack接口的。openstack接口一般是先鉴权然后发送POST /v2/servers等接口创建虚拟资源。具体需要查看openstack官方文档或者电信给出的接口文档。
一般开发时不需要自己构造http消息,例如java中只需要调用openstack4j这种实现好的
类库即可。
业务程序的部署
在完成了虚拟资源的创建后,即虚机拉起,网卡、磁盘等都已经分配好后,就需要将业务程序和配置部署在这些创建起来的虚机上。
VNFM在根据VNFD完成虚拟资源创建后,会将包里的Software目录整个拷贝到VNF的agent机器上(一般通过ssh),如下图所示
其中有个deploy.sh脚本,如下图所示
然后,VNFM通过远程的方式在agent上执行deploy.sh脚本,所以你可以根据自己的需要在Software下放一些包含数据初始化的文件,在deploy.sh里添加一些命令,达到修改agent上的业务的配置的作用。然后agent上的程序下发这些修改后的配置到VNF上的各个虚机上面去。
最后VNFM发送http消息给VNF,VNF执行相应命令,可以完成对接。