OpenStack Tacker介绍 - 6.创建一个多网卡的SFC服务链
2017-10-13 13:19
465 查看
1、说明
本文介绍用tacker创建一个多网卡的sfc服务链。创建以下sfc配置的tacker模板。
+----------------+ +----------------+ +----------------+ | vnf1_001 | | vnf2_001 | | vnf3_001 | +----------------+ +----------------+ +----------------+ CP11 CP12| CP13| CP21 CP22| CP23| CP31 CP32| CP33| | | | | | | VM CP0->-----------+ +-------------+ +-------------+ +--->
(虚拟机内部流量需要自己打通:
可参考:http://blog.csdn.net/linshenyuan1213/article/details/78195061)
2、环境准备
1)网络(根据实际情况创建) # openstack network create net_mgmt # openstack network create sfc-net-1 # openstack network create sfc-net-2 # openstack network create sfc-net-3 # openstack network create sfc-net-4 # openstack subnet create --network net_mgmt --subnet-range 192.168.6.0/24 subnet_mgmt # openstack subnet create --network sfc-net-1 --subnet-range 1.0.0.0/24 sfc-subnet-1 # openstack subnet create --network sfc-net-2 --subnet-range 2.0.0.0/24 sfc-subnet-2 # openstack subnet create --network sfc-net-3 --subnet-range 3.0.0.0/24 sfc-subnet-3 # openstack subnet create --network sfc-net-4 --subnet-range 4.0.0.0/24 sfc-subnet-4 2)镜像 创建一个名为 centos7的镜像(或根据自己情况替换自己已有的镜像名称) 3)云主机规格 创建一个名为 lyh-centos7的规格(或根据自己情况替换自己已有的规格名称) 4)创建一个VM,使用sfc-net-1的网络 该VM 的CP0 port_id为 79a4e10c-5133-4681-b6a5-e1993884d1ab
3、创建3个VNFD
这3个配置文件会在文末给出# tacker vnfd-create --vnfd-file /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd1.yaml vnfd1 # tacker vnfd-create --vnfd-file /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd2.yaml vnfd2 # tacker vnfd-create --vnfd-file /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd3.yaml vnfd3
4、创建3个VNF
# tacker vnf-create --vnfd-name vnfd1 vnf1_001 # tacker vnf-create --vnfd-name vnfd2 vnf2_001 # tacker vnf-create --vnfd-name vnfd3 vnf3_001
5、创建1个VNFFGD
# 不带参数格式 # tacker vnffgd-create --vnffgd-file /home/vnffgd_sfc_lyh/sfc-vnffgd-sample.yaml sfcd_001 # 带参数格式 # tacker vnffgd-create --vnffgd-file /home/vnffgd_sfc_lyh/sfc-vnffgd-param.yaml sfcd_002
6、创建1个VNFFG
# 不带参数格式 # tacker vnffg-create --vnffgd-name sfcd_001 --vnf-mapping VNFD1:vnf1_001,VNFD2:vnf2_001,VNFD3:vnf3_001 sfc_001 # 带参数格式 # tacker vnffg-create --vnffgd-name sfcd_002 \ --param-file /home/vnffgd_sfc_lyh/sfc-vnffg-param-file.yaml \ --vnf-mapping VNFD1:vnf1_001,VNFD2:vnf2_001,VNFD3:vnf3_001 sfc_002 # 参数内容 # cat /home/vnffgd_sfc_lyh/sfc-vnffg-param-file.yaml id: 52 net_src_port_id: 79a4e10c-5133-4681-b6a5-e1993884d1ab ip_dst_pre: - 4.0.0.0/24 #这个为vnfd3_01的CP33的网络子网地址
7、创建后的环境sfc配置信息
通过以下命令,可以看到,sfc的配置与我们手动尝试创建的效果是一致的# neutron port-pair-list # neutron port-pair-group-list # neutron flow-classifier-list # neutron port-chain-list
8、模板内容
# cat /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd1.yaml tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 description: Demo example metadata: template_name: sample-sfc-vnfd1 topology_template: node_templates: VDU1: type: tosca.nodes.nfv.VDU.Tacker properties: image: centos7 flavor: lyh-centos7 availability_zone: nova mgmt_driver: noop config: | param0: key1 param1: key2 user_data_format: RAW user_data: | #!/bin/sh echo "Adding this line to demofile" > /tmp/demofile CP11: type: tosca.nodes.nfv.CP.Tacker properties: management: true order: 0 anti_spoofing_protection: false requirements: - virtualLink: node: VL11 - virtualBinding: node: VDU1 CP12: type: tosca.nodes.nfv.CP.Tacker properties: order: 1 anti_spoofing_protection: false requirements: - virtualLink: node: VL12 - virtualBinding: node: VDU1 CP13: type: tosca.nodes.nfv.CP.Tacker properties: order: 2 anti_spoofing_protection: false requirements: - virtualLink: node: VL13 - virtualBinding: node: VDU1 VL11: type: tosca.nodes.nfv.VL properties: network_name: net_mgmt vendor: Tacker VL12: type: tosca.nodes.nfv.VL properties: network_name: sfc-net-1 vendor: Tacker VL13: type: tosca.nodes.nfv.VL properties: network_name: sfc-net-2 vendor: Tacker
# cat /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd2.yaml tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 description: Demo example metadata: template_name: sample-tosca-vnfd2 topology_template: node_templates: VDU2: type: tosca.nodes.nfv.VDU.Tacker properties: image: centos7 flavor: lyh-centos7 availability_zone: nova mgmt_driver: noop config: | param0: key1 param1: key2 user_data_format: RAW user_data: | #!/bin/sh echo "Adding this line to demofile2" > /tmp/demofile2 CP21: type: tosca.nodes.nfv.CP.Tacker properties: management: true order: 0 anti_spoofing_protection: false requirements: - virtualLink: node: VL21 - virtualBinding: node: VDU2 CP22: type: tosca.nodes.nfv.CP.Tacker properties: order: 1 anti_spoofing_protection: false requirements: - virtualLink: node: VL22 - virtualBinding: node: VDU2 CP23: type: tosca.nodes.nfv.CP.Tacker properties: order: 2 anti_spoofing_protection: false requirements: - virtualLink: node: VL23 - virtualBinding: node: VDU2 VL21: type: tosca.nodes.nfv.VL properties: network_name: net_mgmt vendor: Tacker VL22: type: tosca.nodes.nfv.VL properties: network_name: sfc-net-2 vendor: Tacker VL23: type: tosca.nodes.nfv.VL properties: network_name: sfc-net-3 vendor: Tacker
# cat /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd3.yaml tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 description: Demo example metadata: template_name: sample-tosca-vnfd3 topology_template: node_templates: VDU3: type: tosca.nodes.nfv.VDU.Tacker properties: image: centos7 flavor: lyh-centos7 availability_zone: nova mgmt_driver: noop config: | param0: key1 param1: key2 user_data_format: RAW user_data: | #!/bin/sh echo "Adding this line to demofile3" > /tmp/demofile3 CP31: type: tosca.nodes.nfv.CP.Tacker properties: management: true order: 0 anti_spoofing_protection: false requirements: - virtualLink: node: VL31 - virtualBinding: node: VDU3 CP32: type: tosca.nodes.nfv.CP.Tacker properties: order: 1 anti_spoofing_protection: false requirements: - virtualLink: node: VL32 - virtualBinding: node: VDU3 CP33: type: tosca.nodes.nfv.CP.Tacker properties: order: 2 anti_spoofing_protection: false requirements: - virtualLink: node: VL33 - virtualBinding: node: VDU3 VL31: type: tosca.nodes.nfv.VL properties: network_name: net_mgmt vendor: Tacker VL32: type: tosca.nodes.nfv.VL properties: network_name: sfc-net-3 vendor: Tacker VL33: type: tosca.nodes.nfv.VL properties: network_name: sfc-net-4 vendor: Tacker
# cat /home/vnffgd_sfc_lyh/sfc-vnffgd-sample.yaml tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 description: Sample VNFFG parameterized template topology_template: description: Sample VNFFG parameterized template node_templates: Forwarding_path1: type: tosca.nodes.nfv.FP.Tacker description: creates path (CP12->CP13->CP22-CP23->CP32->CP33) properties: id: 51 policy: type: ACL criteria: - network_src_port_id: 79a4e10c-5133-4681-b6a5-e1993884d1ab - ip_dst_prefix: 1.0.0.0/24 path: - forwarder: VNFD1 capability: CP12 - forwarder: VNFD1 capability: CP13 - forwarder: VNFD2 capability: CP22 - forwarder: VNFD2 capability: CP23 - forwarder: VNFD3 capability: CP32 - forwarder: VNFD3 capability: CP33 groups: VNFFG1: type: tosca.groups.nfv.VNFFG description: HTTP to Corporate Net properties: vendor: tacker version: 1.0 number_of_endpoints: 6 dependent_virtual_link: [VL12,VL13,VL22,VL23,VL32,VL33] connection_point: [CP12,CP13,CP22,CP23,CP32,CP33] constituent_vnfs: [VNFD1,VNFD2,VNFD3] members: [Forwarding_path1]
# cat /home/vnffgd_sfc_lyh/sfc-vnffgd-param.yaml tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 description: Sample VNFFG parameterized template topology_template: description: Sample VNFFG parameterized template inputs: id: type: string description: Network Service Header id, should be diffrenet every path. net_src_port_id: type: string description: Port UUID of source VM. ip_dst_pre: type: string description: Cidr format of destination ip. node_templates: Forwarding_path1: type: tosca.nodes.nfv.FP.Tacker description: creates path (CP12->CP13->CP22-CP23->CP32->CP33) properties: id: { get_input: id } policy: type: ACL criteria: - network_src_port_id: { get_input: net_src_port_id } - ip_dst_prefix: { get_input: ip_dst_pre } path: - forwarder: VNFD1 capability: CP12 - forwarder: VNFD1 capability: CP13 - forwarder: VNFD2 capability: CP22 - forwarder: VNFD2 capability: CP23 - forwarder: VNFD3 capability: CP32 - forwarder: VNFD3 capability: CP33 groups: VNFFG1: type: tosca.groups.nfv.VNFFG description: HTTP to Corporate Net properties: vendor: tacker version: 1.0 number_of_endpoints: 6 dependent_virtual_link: [VL12,VL13,VL22,VL23,VL32,VL33] connection_point: [CP12,CP13,CP22,CP23,CP32,CP33] constituent_vnfs: [VNFD1,VNFD2,VNFD3] members: [Forwarding_path1]
9、命令行效果
1) 创建3个VNFD# tacker vnfd-create --vnfd-file /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd1.yaml vnfd1 Created a new vnfd: +-----------------+--------------------------------------+ | Field | Value | +-----------------+--------------------------------------+ | created_at | 2017-10-13 01:55:35.664800 | | description | Demo example | | id | cb2c915a-322d-43c2-b6e3-23e26de0a303 | | name | vnfd1 | | service_types | vnfd | | template_source | onboarded | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | updated_at | | +-----------------+--------------------------------------+ # tacker vnfd-create --vnfd-file /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd2.yaml vnfd2 Created a new vnfd: +-----------------+--------------------------------------+ | Field | Value | +-----------------+--------------------------------------+ | created_at | 2017-10-13 01:55:56.814992 | | description | Demo example | | id | 4e4d917d-daff-4292-bded-f65892501750 | | name | vnfd2 | | service_types | vnfd | | template_source | onboarded | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | updated_at | | +-----------------+--------------------------------------+ # tacker vnfd-create --vnfd-file /home/vnffgd_sfc_lyh/sfc-vnffg-vnfd3.yaml vnfd3 Created a new vnfd: +-----------------+--------------------------------------+ | Field | Value | +-----------------+--------------------------------------+ | created_at | 2017-10-13 01:56:15.163242 | | description | Demo example | | id | ac78ca22-f07f-4f7a-9a0a-02853d0e84e9 | | name | vnfd3 | | service_types | vnfd | | template_source | onboarded | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | updated_at | | +-----------------+--------------------------------------+ # tacker vnfd-list +--------------------------------------+-------+-----------------+--------------+ | id | name | template_source | description | +--------------------------------------+-------+-----------------+--------------+ | 4e4d917d-daff-4292-bded-f65892501750 | vnfd2 | onboarded | Demo example | | ac78ca22-f07f-4f7a-9a0a-02853d0e84e9 | vnfd3 | onboarded | Demo example | | cb2c915a-322d-43c2-b6e3-23e26de0a303 | vnfd1 | onboarded | Demo example | +--------------------------------------+-------+-----------------+--------------+2) 创建3个VNF
# tacker vnf-create --vnfd-name vnfd1 vnf1_001 Created a new vnf: +----------------+--------------------------------------+ | Field | Value | +----------------+--------------------------------------+ | created_at | 2017-10-13 01:57:02.486806 | | description | Demo example | | error_reason | | | id | fd9d0e13-e9d8-448b-8196-6ea7528c6f68 | | instance_id | 55bd6f37-270e-4982-9201-dd2bb702afe3 | | mgmt_url | | | name | vnf1_001 | | placement_attr | {"vim_name": "test_vim"} | | status | PENDING_CREATE | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | updated_at | | | vim_id | 9ede7118-7d78-4003-8909-63ca6ec956e4 | | vnfd_id | cb2c915a-322d-43c2-b6e3-23e26de0a303 | +----------------+--------------------------------------+ # tacker vnf-create --vnfd-name vnfd2 vnf2_001 Created a new vnf: +----------------+--------------------------------------+ | Field | Value | +----------------+--------------------------------------+ | created_at | 2017-10-13 01:57:22.455830 | | description | Demo example | | error_reason | | | id | 0275d180-28f0-4705-8881-baf4137e9dab | | instance_id | 5350c81b-85ec-4ac3-8df1-c37ca8499a46 | | mgmt_url | | | name | vnf2_001 | | placement_attr | {"vim_name": "test_vim"} | | status | PENDING_CREATE | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | updated_at | | | vim_id | 9ede7118-7d78-4003-8909-63ca6ec956e4 | | vnfd_id | 4e4d917d-daff-4292-bded-f65892501750 | +----------------+--------------------------------------+ # tacker vnf-create --vnfd-name vnfd3 vnf3_001 Created a new vnf: +----------------+--------------------------------------+ | Field | Value | +----------------+--------------------------------------+ | created_at | 2017-10-13 01:57:31.490614 | | description | Demo example | | error_reason | | | id | da2b9fb7-48dd-44c5-993e-075c8c36d856 | | instance_id | 7973407d-54e6-490b-a5e1-53031707ac55 | | mgmt_url | | | name | vnf3_001 | | placement_attr | {"vim_name": "test_vim"} | | status | PENDING_CREATE | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | updated_at | | | vim_id | 9ede7118-7d78-4003-8909-63ca6ec956e4 | | vnfd_id | ac78ca22-f07f-4f7a-9a0a-02853d0e84e9 | +----------------+--------------------------------------+ # tacker vnf-list +--------------------------------------+----------+---------------------------+--------+ | id | name | mgmt_url | status | +--------------------------------------+----------+---------------------------+--------+ | 0275d180-28f0-4705-8881-baf4137e9dab | vnf2_001 | {"VDU2": "192.168.6.118"} | ACTIVE | | da2b9fb7-48dd-44c5-993e-075c8c36d856 | vnf3_001 | {"VDU3": "192.168.6.119"} | ACTIVE | | fd9d0e13-e9d8-448b-8196-6ea7528c6f68 | vnf1_001 | {"VDU1": "192.168.6.116"} | ACTIVE | +--------------------------------------+----------+---------------------------+--------+3) 创建1个VNFFGD
# 不带参数格式 # tacker vnffgd-create --vnffgd-file /home/vnffgd_sfc_lyh/sfc-vnffgd-sample.yaml sfcd_001 Created a new vnffgd: +-----------------+-------------------------------------+ | Field | Value | +-----------------+-------------------------------------+ | description | | | id | 9bb32af4-0eff-4733-88c4-e935f20121e6| | name | sfcd_001 | | template | ... | | template_source | onboarded | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | +-----------------+-------------------------------------+ # 带参数格式 # tacker vnffgd-create --vnffgd-file /home/vnffgd_sfc_lyh/sfc-vnffgd-param.yaml sfcd_002 Created a new vnffgd: +-----------------+-------------------------------------+ | Field | Value | +-----------------+-------------------------------------+ | description | | | id | ad2583f2-1d87-4fdc-af91-05058f312cc0| | name | sfcd_002 | | template | ... | | template_source | onboarded | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | +-----------------+-------------------------------------+ # tacker vnffgd-list +--------------------------------------+----------+-------------+ | id | name | description | +--------------------------------------+----------+-------------+ | 9bb32af4-0eff-4733-88c4-e935f20121e6 | sfcd_001 | | | ad2583f2-1d87-4fdc-af91-05058f312cc0 | sfcd_002 | | +--------------------------------------+----------+-------------+4) 创建1个VNFFG
# 不带参数格式 # tacker vnffg-create --vnffgd-name sfcd_001 --vnf-mapping VNFD1:vnf1_001,VNFD2:vnf2_001,VNFD3:vnf3_001 sfc_001 # 带参数格式 # tacker vnffg-create --vnffgd-name sfcd_002 \ --param-file /home/vnffgd_sfc_lyh/sfc-vnffg-param-file.yaml \ --vnf-mapping VNFD1:vnf1_001,VNFD2:vnf2_001,VNFD3:vnf3_001 sfc_002 Created a new vnffg: +------------------+--------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------+ | description | | | forwarding_paths | d63b4356-5c54-444c-9f9d-78ed4059f2d6 | | id | d8f28c30-c776-43bc-bbc5-9efb6205a0ce | | name | sfc_002 | | status | PENDING_CREATE | | tenant_id | eaad10cdd84743bf90bdbd7e781ea9a0 | | vnf_mapping | {"VNFD3": "da2b9fb7-48dd-44c5-993e-075c8c36d856",| | | "VNFD2": "0275d180-28f0-4705-8881-baf4137e9dab",| | | "VNFD1": "fd9d0e13-e9d8-448b-8196-6ea7528c6f68"}| | vnffgd_id | ad2583f2-1d87-4fdc-af91-05058f312cc0 | +------------------+--------------------------------------------------+ # tacker vnffg-list +---------+--------+--------------------------------------+ | name | status | vnffgd_id | +---------+--------+--------------------------------------+ | sfc_002 | ACTIVE | ad2583f2-1d87-4fdc-af91-05058f312cc0 | +---------+--------+--------------------------------------+ # 参数文件内容 # cat /home/vnffgd_sfc_lyh/sfc-vnffg-param-file.yaml id: 52 net_src_port_id: 79a4e10c-5133-4681-b6a5-e1993884d1ab ip_dst_pre: - 1.0.0.0/245) 创建后的环境sfc配置信息
通过以下命令,可以看到,sfc的配置与我们手动尝试创建的效果是一致的
# neutron port-pair-list +--------------------------------------+----------------------------+--------------------------------------+--------------------------------------+ | id | name | ingress | egress | +--------------------------------------+----------------------------+--------------------------------------+--------------------------------------+ | 0a436042-3aa4-4a37-a0c7-3dfafa3b5aa1 | vnf3_001-connection-points | 081055ef-803e-425b-bb2b-ab97b37c0f69 | 0d31d060-50bb-40df-b6db-3822086819a3 | | dc243e56-da23-4f3d-85ca-5fd6925ff199 | vnf1_001-connection-points | 30eb47d9-f580-4f6b-b206-178d0aad7acc | 976a893d-15a6-4dfe-81e1-7d1a21cc42ac | | e2faa1d1-c0cc-48ba-b050-3547fb9b4ad4 | vnf2_001-connection-points | 412b9268-0b4d-4880-8e0a-e83d74043044 | 87655097-9d9d-4568-9824-b00b3be81829 | +--------------------------------------+----------------------------+--------------------------------------+--------------------------------------+ # neutron port-pair-group-list +--------------------------------------+--------------------------+-----------------------------------------+ | id | name | port_pairs | +--------------------------------------+--------------------------+-----------------------------------------+ | 387154eb-2b82-4f94-ba0c-72e8c937cda3 | vnf1_001-port-pair-group | ['dc243e56-da23-4f3d-85ca-5fd6925ff199']| | a91aba46-042e-4fbd-866b-bbe52bb95750 | vnf2_001-port-pair-group | ['e2faa1d1-c0cc-48ba-b050-3547fb9b4ad4']| | aff723b4-cd8e-4c65-954c-98b51200efe7 | vnf3_001-port-pair-group | ['0a436042-3aa4-4a37-a0c7-3dfafa3b5aa1']| +--------------------------------------+--------------------------+-----------------------------------------+ # neutron flow-classifier-list +--------------------------------------+------------------------------------------------------------+ | id | summary | +--------------------------------------+------------------------------------------------------------+ | 6d2a045e-4190-4a97-b1b8-f6ae40099f97 | protocol: any, | | | source[port]: any[any:any], | | | destination[port]: 1.0.0.0/24[any:any], | | | neutron_source_port: 79a4e10c-5133-4681-b6a5-e1993884d1ab, | | | neutron_destination_port: None, | | | l7_parameters: {} | +--------------------------------------+------------------------------------------------------------+ # neutron port-chain-list +--------------------+------------------------------------------+----------------------------------------+ | name | port_pair_groups | flow_classifiers | +--------------------+------------------------------------------+----------------------------------------+ | sfc_002-port-chain | ['387154eb-2b82-4f94-ba0c-72e8c937cda3', |['6d2a045e-4190-4a97-b1b8-f6ae40099f97']| | | 'a91aba46-042e-4fbd-866b-bbe52bb95750', | | | | 'aff723b4-cd8e-4c65-954c-98b51200efe7'] | | +--------------------+-----------------------------------------------------------------------------------+
相关文章推荐
- OpenStack Tacker介绍 - 7.创建一个多网卡的SFC服务链-VM内部流量打通
- OpenStack Tacker介绍 - 5.创建一个简单的VNFFG,即实现一个SFC服务链的自动化创建
- 创建一个windows服务的小程序及注意事项
- 创建一个Storyboard工程 storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程
- tomcat创建一个windows服务
- SC Create 创建一个Windows系统服务
- Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件 .
- 用sc create----创建一个服务
- 使用MicroService4Net 快速创建一个简单的微服务
- 「五」创建一个带 tomcat 服务的基础镜像(修订版)
- 在服务中用管理员权限创建一个进程
- 使用VS2008创建发布一个简单的WCF服务,并引入到web应用程序
- SCVMM2012R2服务模板系列(五)创建一个开箱即用的双层服务模版 推荐
- 「五」创建一个带 tomcat 服务的基础镜像(修订版)
- BLE-NRF51822教程6-创建一个自己的服务
- 创建一个桥接网卡
- [bigdata-106] spring-cloud-03 创建一个hello服务并把它注册到eurake server双机高可用集群
- tomcat创建一个windows服务
- 如何在Mac OS X上创建一个Service服务进程