{"id":11332,"date":"2017-04-12T14:52:29","date_gmt":"2017-04-12T12:52:29","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=11332"},"modified":"2017-04-12T14:52:29","modified_gmt":"2017-04-12T12:52:29","slug":"an-overview-of-networking-in-rancher-using-cattle","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/","title":{"rendered":"An overview of networking in Rancher using Cattle"},"content":{"rendered":"<p>As noted elsewhere, we&#8217;re looking at <a href=\"http:\/rancher.com\">Rancher<\/a> in the context of one of our projects. We&#8217;ve been doing some work on enabling it to work over heterogeneous compute infrastructures &#8211; one of which could be an ARM based edge device and one a standard x86_64 cloud execution environment. Some of our colleagues were asking how the networking works &#8211; we had not looked into this in much detail, so we decided to find &#8211; turns out it&#8217;s pretty complex.<\/p>\n<p><!--more--><\/p>\n<p>We were working with the standard environment which Rancher supports &#8211; so-called <a href=\"http:\/\/rancher.com\/cattle-swarm-kubernetes-side-side\/\">Cattle<\/a> &#8211; this uses <code>docker-machine<\/code> to set up hosts and provides its own networking solution. Rancher supports <a href=\"https:\/\/docs.docker.com\/engine\/swarm\/\">docker swarm<\/a> and <a href=\"https:\/\/kubernetes.io\/\">kubernetes<\/a> (as well as other management systems such as <a href=\"http:\/\/mesos.apache.org\/\">Mesos<\/a> and <a href=\"https:\/\/docs.microsoft.com\/en-us\/virtualization\/windowscontainers\/quick-start\/quick-start-windows-server\">Windows<\/a>) &#8211; the network configuration for those environments is likely different.<\/p>\n<p>The basic networking concept which is employed in the standard Rancher\/Cattle configuration is illustrated in Figure 1 below. There, it can be seen that there is a single, flat \/16 network which is used for all containers within a single <a href=\"https:\/\/docs.rancher.com\/rancher\/v1.6\/en\/environments\/\">Environment<\/a> &#8211; by default, this is the 10.42.0.0\/16 network; it spans all the hosts within the Environment.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-11339\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png\" alt=\"\" width=\"584\" height=\"217\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-300x112.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-768x286.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-500x186.png 500w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1.png 1099w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p><em>Figure 1: Basic overview of network infrastructure in Rancher &#8211; there is a single flat network for all containers and each node has its own internal network; these networks both operate within the docker0 bridge in the nodes.<\/em><\/p>\n<p>Each host also has its own internal network &#8211; by default, this is on the 172.17.0.0\/16 network. This is used by the services which are local to each host in the Environment &#8211; the internal DNS server and a metadata server for example. Obviously, it is not possible to route from the 172.17.0.0 network on one host to the 172.17.0.0 network on another host.<\/p>\n<p>Both of these networks operate within a single linux bridge &#8211; by default this is the docker0 bridge. Routing between these networks is possible: traffic between these networks is terminated on the bridge and passed through to the docker host kernel where the routing table sends it back to the same bridge. Then it is forwarded on to the appropriate destination container.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-11335\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-2.png\" alt=\"\" width=\"803\" height=\"738\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-2.png 803w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-2-300x276.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-2-768x706.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-2-326x300.png 326w\" sizes=\"auto, (max-width: 803px) 100vw, 803px\" \/><\/a><\/p>\n<p><em>Figure 2: IPSec router configuration in Rancher\/Cattle &#8211; all nodes in the Environment are connected via a fully connected mesh; all routers contain routing tables with entries for all other containers in the system, pointing at the tunnel that connects to the host on which the container is running.<\/em><\/p>\n<p>Hosts are connected to each other via <a href=\"https:\/\/tools.ietf.org\/html\/rfc4301\">IPSec<\/a> tunnels: Rancher sets up such tunnels between all nodes within the Environment, resulting in a potentially large mesh of tunnel connections. At each end of the tunnel there is a router &#8211; inside a specific container &#8211; which determines how traffic should be routed. When a new container is added to the system, the IPSec routers on all the other nodes are notified and the new container is added to their routing tables via <code>ip xfrm policy<\/code> mechanisms. These IPSec routers also have a specific <a href=\"https:\/\/tools.ietf.org\/html\/rfc826\">ARP<\/a> related configuration such that they respond to ARP messages for any hosts that are in their routing tables (see <a href=\"https:\/\/wiki.strongswan.org\/projects\/strongswan\/wiki\/ForwardingAndSplitTunneling\">here<\/a> for more details): as their routing tables contain entries for all containers on the other hosts, they respond to ARP requests for any hosts not on the local node. In this way, the IPSec router becomes the next hop when a container needs to communicate with a container on a different node. The IPSec router uses its policy to determine which tunnel should be the next hop for the packet and then on the destination node the packet is passed into the docker0 bridge where ARP resolution enables it to find its way to its ultimate destination. The basic configuration of the IPSec routers can be seen in Figure 2&nbsp;above.<\/p>\n<p>It is worth noting that the above flat network configuration enables all containers in the Environment to communicate with each other &#8211; there is no specific isolation between applications running within the Environment.<\/p>\n<p>Understanding the network configuration within Rancher took some time &#8211; it is complex and clearly it is not suited to all use cases: obviously the solution cannot scale to very large numbers of hosts in an Environment, but then it is likely that the number of hosts in an Environment would not get so large in most cases. Troubleshooting or debugging networking issues is always tricky &#8211; doing so in this context even more so.<\/p>\n<p>With some understanding of the basic Rancher\/Cattle networking, we&#8217;re now going to turn our attention to Swarm and see how networking works in this context and, in particular, how it integrates with Rancher.<\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/application-deployment\/\">application deployment<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/container-management\/\">container management<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/container-orchestration\/\">container orchestration<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/docker\/\">docker<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/rancher\/\">rancher<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>As noted elsewhere, we&#8217;re looking at Rancher in the context of one of our projects. We&#8217;ve been doing some work on enabling it to work over heterogeneous compute infrastructures &#8211; one of which could be an ARM based edge device and one a standard x86_64 cloud execution environment. Some of our colleagues were asking how [&hellip;]<\/p>\n","protected":false},"author":92,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,858],"tags":[860,859,861,484,850],"features":[],"class_list":["post-11332","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-fi-next","tag-application-deployment","tag-container-management","tag-container-orchestration","tag-docker","tag-rancher"],"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>An overview of networking in Rancher using Cattle - 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\/an-overview-of-networking-in-rancher-using-cattle\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An overview of networking in Rancher using Cattle\" \/>\n<meta property=\"og:description\" content=\"As noted elsewhere, we&#8217;re looking at Rancher in the context of one of our projects. We&#8217;ve been doing some work on enabling it to work over heterogeneous compute infrastructures &#8211; one of which could be an ARM based edge device and one a standard x86_64 cloud execution environment. Some of our colleagues were asking how [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-12T12:52:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png\" \/>\n<meta name=\"author\" content=\"Sean Murphy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sean Murphy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/\"},\"author\":{\"name\":\"Sean Murphy\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/c87a6eef7e1f4a152aeec5f8b9527b8d\"},\"headline\":\"An overview of networking in Rancher using Cattle\",\"datePublished\":\"2017-04-12T12:52:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/\"},\"wordCount\":772,\"commentCount\":1,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png\",\"keywords\":[\"application deployment\",\"container management\",\"container orchestration\",\"docker\",\"rancher\"],\"articleSection\":[\"*.*\",\"FI-NEXT\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/\",\"name\":\"An overview of networking in Rancher using Cattle - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png\",\"datePublished\":\"2017-04-12T12:52:29+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/c87a6eef7e1f4a152aeec5f8b9527b8d\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1.png\",\"width\":1099,\"height\":409},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An overview of networking in Rancher using Cattle\"}]},{\"@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\/c87a6eef7e1f4a152aeec5f8b9527b8d\",\"name\":\"Sean Murphy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/4514cb0ddfe236fd05d5ddb715bc19e1e1e35dafa16bb1b911e6094d278211d6?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4514cb0ddfe236fd05d5ddb715bc19e1e1e35dafa16bb1b911e6094d278211d6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4514cb0ddfe236fd05d5ddb715bc19e1e1e35dafa16bb1b911e6094d278211d6?s=96&d=mm&r=g\",\"caption\":\"Sean Murphy\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/murp\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"An overview of networking in Rancher using Cattle - 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\/an-overview-of-networking-in-rancher-using-cattle\/","og_locale":"en_US","og_type":"article","og_title":"An overview of networking in Rancher using Cattle","og_description":"As noted elsewhere, we&#8217;re looking at Rancher in the context of one of our projects. We&#8217;ve been doing some work on enabling it to work over heterogeneous compute infrastructures &#8211; one of which could be an ARM based edge device and one a standard x86_64 cloud execution environment. Some of our colleagues were asking how [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2017-04-12T12:52:29+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png","type":"","width":"","height":""}],"author":"Sean Murphy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sean Murphy","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/"},"author":{"name":"Sean Murphy","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/c87a6eef7e1f4a152aeec5f8b9527b8d"},"headline":"An overview of networking in Rancher using Cattle","datePublished":"2017-04-12T12:52:29+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/"},"wordCount":772,"commentCount":1,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png","keywords":["application deployment","container management","container orchestration","docker","rancher"],"articleSection":["*.*","FI-NEXT"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/","url":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/","name":"An overview of networking in Rancher using Cattle - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1-1024x381.png","datePublished":"2017-04-12T12:52:29+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/c87a6eef7e1f4a152aeec5f8b9527b8d"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/04\/rancher-networking-1-1.png","width":1099,"height":409},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/an-overview-of-networking-in-rancher-using-cattle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"An overview of networking in Rancher using Cattle"}]},{"@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\/c87a6eef7e1f4a152aeec5f8b9527b8d","name":"Sean Murphy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4514cb0ddfe236fd05d5ddb715bc19e1e1e35dafa16bb1b911e6094d278211d6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4514cb0ddfe236fd05d5ddb715bc19e1e1e35dafa16bb1b911e6094d278211d6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4514cb0ddfe236fd05d5ddb715bc19e1e1e35dafa16bb1b911e6094d278211d6?s=96&d=mm&r=g","caption":"Sean Murphy"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/murp\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11332","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\/92"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=11332"}],"version-history":[{"count":8,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11332\/revisions"}],"predecessor-version":[{"id":11352,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11332\/revisions\/11352"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=11332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=11332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=11332"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=11332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}