{"id":10402,"date":"2016-08-02T14:21:37","date_gmt":"2016-08-02T12:21:37","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=10402"},"modified":"2016-08-04T15:08:29","modified_gmt":"2016-08-04T13:08:29","slug":"orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/","title":{"rendered":"Orchestrate your network service with Netfloc plugin for OpenStack Heat"},"content":{"rendered":"<p>Stitching virtual network functions (VNFs) together in a so called Network (Service) Function Chain is not a novelty any longer. Described in our <a href=\"https:\/\/blog.zhaw.ch\/icclab\/service-function-chaining-using-the-sdk4sdn\">previous post<\/a>, the SDN team had already worked\u00a0on creating SFC library support for OpenStack in our SDK for SDN. In this blog we describe the advances made towards integrating Netfloc services with both, Heat Orchestration Template (HoT) \u2013 based orchestrators and Network Function Virtualization (NFV) \u2013 based orchestrators.<\/p>\n<p>To do so, and also to make a\u00a0step towards automatizing the SFC management with Netfloc, we created a <a href=\"https:\/\/github.com\/icclab\/netfloc-heat\">Heat plugin for Netfoc<\/a>.\u00a0It is based on the Netfloc API library for managing network service chains in OpenStack clouds. The parameters required to create the service include: <em>OpenDaylight credentials<\/em>, the <em>IP<\/em> and the <em>port<\/em> of the <em>Netfloc node<\/em>, along with the <em>Neutron port IDs<\/em> of the VNF instances.<\/p>\n<p>For a network service operator, applying the plugin makes it very simple to deploy multiple chains in OpenStack cloud infrastructure. An example includes a packet inspection VNF that determines if the traffic is video and the\u00a0type of the video service, and sends it further to a virtual transcoding unit VNF for quality adjustment. If data traffic is detected, packets are steered to a virtual security appliance acting as a virtual firewall, which sends them further\u00a0to a virtual proxy VNF and a deep packet inspection VNF.<\/p>\n<p><!--more--><\/p>\n<p>The functionality boils down to collecting the Neutron port IDs of the VNFs to be chained, and handing them over to the following APIs calls:<\/p>\n<p>Create Chain:<\/p>\n<pre><code>POST [Netfloc_URL]\/restconf\/operations\/netfloc:create-service-chain\r\nHeaders: Content-Type: application\/json\r\nBody: {\"input\": {\u00a0neutron-ports : $neutron_ports\u00a0} }\r\nResponse: 201 (application\/json)\r\nBody: {\"output\u201c: { \"service-chain-id\":$chain_id }<\/code><\/pre>\n<p>Delete Chain:<\/p>\n<pre><code>POST [Netfloc_URL]\/restconf\/operations\/netfloc:delete-service-chain\r\nHeaders: Content-Type: application\/json\r\nBody: {\"input\": {service-chain-id :$chain_id }}<\/code><\/pre>\n<p>This library grants to Netfloc an interoperability with OpenStack based orchestration engines.\u00a0An example of how to use it, has been shown within the scope of the T-Nova project for an\u00a0<a href=\"https:\/\/github.com\/T-NOVA\/netfloc-demo\">SFC demonstration<\/a>. We have also integrated it with\u00a0our home made <a href=\"https:\/\/blog.zhaw.ch\/icclab\/cloud-orchestration-hurtle-released\/\">Hurtle orchestrator<\/a> shown in a joint 5G-cloud demo at the <a href=\"https:\/\/blog.zhaw.ch\/icclab\/sesame-hurtle-netfloc\/\">EUCNC conference<\/a>.<\/p>\n<p>Apart from the standard inclusion of the\u00a0<em>netfloc.py<\/em>\u00a0file in your heat plugin repo, you need to have a Netfloc-controlled OpenStack cloud, to be able make a use of it. Employing\u00a0Netfloc\u00a0achieves\u00a0a\u00a0full SDN based cloud via the OpenStack Neutron ML2 plugin. In your infrastructure, this changes the wiring between the OVS ports of the switch and the physical interfaces on the OpenStack hosts and substitutes\u00a0the\u00a0de facto Neutron-based GRE\/VxLAN encapsulation mechanisms, to exclusively L2-based SDN environment.<\/p>\n<p>To leverage NFV architectures with Netfloc services, few adaptations are required. The NFV orchestrators are bind to the ETSI-MANO model (see below), thus to automatically deploy Netfloc services, the Netfloc HoT template\u00a0has to be converted to ETSI-MANO specific template.\u00a0This implies describing the SFC using the parameters of the\u00a0Network Service Descriptor (NSD) template that is used by the NFV Orchestrator to instantiate a Network Service.<\/p>\n<p>According to <a href=\"http:\/\/www.etsi.org\/deliver\/etsi_gs\/NFV-MAN\/001_099\/001\/01.01.01_60\/gs_nfv-man001v010101p.pdf\">ETSI-MANO specification<\/a>\u00a0for\u00a0Network Functions Virtualization (NFV) Management and Orchestration,\u00a0the NSD describes the relationship between virtual and\/or physical network functions, VNFs and PNFs, defining their connection links (VLDs) in the NFVI network.<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10425\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png\" alt=\"nfv-mano\" width=\"395\" height=\"352\" \/><\/a><\/p>\n<div class=\"page\" title=\"Page 40\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p style=\"text-align: center\">Figure1: Network Service information elements<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Figure 1 depicts the NS building blocks from the specification. The\u00a0NSD is a template file that includes the descriptors of the NS constituent components: VNFs\/PNFs, VNFFG, and VLDs.<\/p>\n<ul>\n<li><strong>VNF Descriptor (VNFD)<\/strong> describes a VNF in terms of its deployment and operational behaviour requirements, such as VNF instantiation and lifecycle management among the others.<\/li>\n<li><strong>VNF Forwarding Graph Descriptor (VNFFGD)<\/strong> describes a topology of the Network Service with reference to the VNFs and their Virtual Links. A Network Service can define more VNF Forwarding Graphs (VNFFG), to enforce traffic steering on different levels: Control plane, Management plane, and User plane.<\/li>\n<li><strong>Virtual Link Descriptor (VLD)<\/strong> describes the resource requirements that are needed for a link between VNFs, PNFs and endpoints of the Network Service.<\/li>\n<\/ul>\n<p>From the above said, it is very simple to convert Netfloc&#8217;s SFC specification (from Heat) to ETSI context, by simply adapting the template parameters in the NSD.<\/p>\n<p>Following the <a href=\"https:\/\/github.com\/T-NOVA\/NFVdescriptors\/blob\/master\/templates-official\/nsd.template.yml\">T-Nova NSD descriptor template<\/a>,\u00a0the example below demonstrates how a Netfloc HoT conversion to ETSI-MANO NSD would look like. The first snippet shows\u00a0part of the yaml template for chain creation specific to HoT:<\/p>\n<pre><code>chain_create:\r\n    type: Netfloc::Service::Chain\r\n    depends_on: [ vnf_vTC, vnf_vTC_f, vnf_vProxy, vnf_vTC_out1_port, vnf_vTC_f_in_port, vnf_vTC_f_out_port, vnf_vProxy_in_port ]\r\n    properties:\r\n      port1:\r\n        get_resource: vnf_vTC_out1_port\r\n      port2:\r\n        get_resource: vnf_vTC_f_in_port\r\n      port3:\r\n        get_resource: vnf_vTC_f_out_port\r\n      port4:\r\n        get_resource: vnf_vProxy_in_port\r\n      odl_username : { get_param: odl_username }\r\n      odl_password: { get_param: odl_password }\r\n      netfloc_ip_port: { get_param: netfloc_ip_port }<\/code><\/pre>\n<p>The corresponding VNFFGD for the network chain should look like the following part of a NFV NSD template:<\/p>\n<pre><code>....\r\n  vnffgd:\r\n    id: \"418420e3-e2a8-4338-bc8c-be685548bad2\"\r\n    vendor: \"T-Nova\"\r\n    version: \"1.0\"\r\n    ns_version: \"1.0.0\" \r\n   \r\n vnffg_id: \r\n      - vnffg0:  \r\n        number_of_endpoints: 4 \r\n        number_of_virtual_links: 2  \r\n        depedent_virtual_links: [\"vld1\",\"vld2\"]\r\n        \r\n        network_forwarding_path: \r\n          - nfp0:\r\n            graph: [\"vld1\",\"vld2\"]\r\n            connection_points: [\"data0\",\"data1\",\"data2\",\"data3\"]\r\n            constituent_vnfs: [\"vnfd0:vTC\", \"vnfd0:vMT\", \"vnfd2:vProxy\"]<\/code><\/pre>\n<p>Since Netfloc SFC requires an ordered list of connection_points to enforce a traffic steering, the parameters [&#8220;data0&#8221;,&#8221;data1&#8243;&#8230;] should match\u00a0the Neutron IDs of the VNFs in the chain, equivalent to the &#8220;port1&#8221;,&#8221;port2&#8243;&#8230; resource properties of the HoT template. Including multiple\u00a0service function chains, translates to defining multiple network_forwarding_path descriptions in the VNFFGD. Adaptation of the described template to <a href=\"http:\/\/docs.oasis-open.org\/tosca\/tosca-nfv\/v1.0\/tosca-nfv-v1.0.html\">TOSCA-NFV<\/a> specification can be achieved by applying the same logic.<\/p>\n<p>An example reference project of the discussed\u00a0ETSI NFV MANO specification is\u00a0<a href=\"http:\/\/www.tid.es\/long-term-innovation\/network-innovation\/telefonica-nfv-reference-lab\/openmano\">OpenMano<\/a> that includes own\u00a0<a href=\"https:\/\/github.com\/nfvlabs\/openmano\/wiki\/openmano-descriptors\">descriptor files<\/a>,\u00a0similar as the one described in T-Nova. The\u00a0<a href=\"http:\/\/www.sesame-h2020-5g-ppp.eu\">Sesame project<\/a>\u00a0our lab is involved in, will also implement an adaptation of the descriptor files for its Sesame-specific services.\u00a0Finally, OpenStack has a <a href=\"https:\/\/github.com\/openstack\/heat-translator\">Heat-translator\u00a0<\/a>project to facilitate\u00a0the conversion from non-HoT templates (example TOSCA yaml) to HoT-specific templates.<\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/hot-yaml-template\/\">HoT yaml template<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/netfloc\/\">netfloc<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/nsd-descriptors\/\">NSD descriptors<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack-heat\/\">OpenStack Heat<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/sdn\/\">SDN<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/sesame\/\">SESAME<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/t-nova\/\">T-NOVA<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/vnf\/\">vnf<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>Stitching virtual network functions (VNFs) together in a so called Network (Service) Function Chain is not a novelty any longer. Described in our previous post, the SDN team had already worked\u00a0on creating SFC library support for OpenStack in our SDK for SDN. In this blog we describe the advances made towards integrating Netfloc services with [&hellip;]<\/p>\n","protected":false},"author":89,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[796,784,795,715,293,619,673,657],"features":[],"class_list":["post-10402","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-hot-yaml-template","tag-netfloc","tag-nsd-descriptors","tag-openstack-heat","tag-sdn","tag-sesame","tag-t-nova","tag-vnf"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Orchestrate your network service with Netfloc plugin for OpenStack Heat - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Orchestrate your network service with Netfloc plugin for OpenStack Heat\" \/>\n<meta property=\"og:description\" content=\"Stitching virtual network functions (VNFs) together in a so called Network (Service) Function Chain is not a novelty any longer. Described in our previous post, the SDN team had already worked\u00a0on creating SFC library support for OpenStack in our SDK for SDN. In this blog we describe the advances made towards integrating Netfloc services with [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-02T12:21:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-08-04T13:08:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png\" \/>\n<meta name=\"author\" content=\"irenatr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"irenatr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\"},\"author\":{\"name\":\"irenatr\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/da21ae5e2a240a1445465cfb1d0f1f2c\"},\"headline\":\"Orchestrate your network service with Netfloc plugin for OpenStack Heat\",\"datePublished\":\"2016-08-02T12:21:37+00:00\",\"dateModified\":\"2016-08-04T13:08:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\"},\"wordCount\":851,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png\",\"keywords\":[\"HoT yaml template\",\"netfloc\",\"NSD descriptors\",\"OpenStack Heat\",\"SDN\",\"SESAME\",\"T-NOVA\",\"vnf\"],\"articleSection\":[\"*.*\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\",\"name\":\"Orchestrate your network service with Netfloc plugin for OpenStack Heat - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png\",\"datePublished\":\"2016-08-02T12:21:37+00:00\",\"dateModified\":\"2016-08-04T13:08:29+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/da21ae5e2a240a1445465cfb1d0f1f2c\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano.png\",\"width\":1269,\"height\":1124},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Orchestrate your network service with Netfloc plugin for OpenStack Heat\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/da21ae5e2a240a1445465cfb1d0f1f2c\",\"name\":\"irenatr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/e4eade01f525f84b6d6542ababe6db35882b518534e07d5e95434edbe327bed0?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e4eade01f525f84b6d6542ababe6db35882b518534e07d5e95434edbe327bed0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e4eade01f525f84b6d6542ababe6db35882b518534e07d5e95434edbe327bed0?s=96&d=mm&r=g\",\"caption\":\"irenatr\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/irenatr\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Orchestrate your network service with Netfloc plugin for OpenStack Heat - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/","og_locale":"en_US","og_type":"article","og_title":"Orchestrate your network service with Netfloc plugin for OpenStack Heat","og_description":"Stitching virtual network functions (VNFs) together in a so called Network (Service) Function Chain is not a novelty any longer. Described in our previous post, the SDN team had already worked\u00a0on creating SFC library support for OpenStack in our SDK for SDN. In this blog we describe the advances made towards integrating Netfloc services with [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2016-08-02T12:21:37+00:00","article_modified_time":"2016-08-04T13:08:29+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png","type":"","width":"","height":""}],"author":"irenatr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"irenatr","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/"},"author":{"name":"irenatr","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/da21ae5e2a240a1445465cfb1d0f1f2c"},"headline":"Orchestrate your network service with Netfloc plugin for OpenStack Heat","datePublished":"2016-08-02T12:21:37+00:00","dateModified":"2016-08-04T13:08:29+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/"},"wordCount":851,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png","keywords":["HoT yaml template","netfloc","NSD descriptors","OpenStack Heat","SDN","SESAME","T-NOVA","vnf"],"articleSection":["*.*"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/","url":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/","name":"Orchestrate your network service with Netfloc plugin for OpenStack Heat - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano-300x266.png","datePublished":"2016-08-02T12:21:37+00:00","dateModified":"2016-08-04T13:08:29+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/da21ae5e2a240a1445465cfb1d0f1f2c"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/08\/nfv-mano.png","width":1269,"height":1124},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/orchestrate-your-network-service-with-netfloc-plugin-for-openstack-heat\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Orchestrate your network service with Netfloc plugin for OpenStack Heat"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/da21ae5e2a240a1445465cfb1d0f1f2c","name":"irenatr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e4eade01f525f84b6d6542ababe6db35882b518534e07d5e95434edbe327bed0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e4eade01f525f84b6d6542ababe6db35882b518534e07d5e95434edbe327bed0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e4eade01f525f84b6d6542ababe6db35882b518534e07d5e95434edbe327bed0?s=96&d=mm&r=g","caption":"irenatr"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/irenatr\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/89"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=10402"}],"version-history":[{"count":33,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10402\/revisions"}],"predecessor-version":[{"id":10458,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10402\/revisions\/10458"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=10402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=10402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=10402"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=10402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}